df.first_有效索引()返回引发KeyError的索引?

2024-09-28 20:43:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试按月份分组pd.DataFrame,并应用一个自定义函数ultimo(x)

def ultimo(x):
    if x.first_valid_index() is None:
        return np.nan
    else:
        return x[x.first_valid_index()]

我从另一个question of mine那里得到这个。但是,今天我在应用它时遇到了一个KeyError它声称返回的索引不在索引内?在

Sample DataFrame as input

我已经打印了x和x。第一个\u valid_index()也返回:

^{pr2}$

在运行navs = navs.groupby(navs.index.to_period('M')).apply(ultimo)之前,我已经使用pd.to_datetime将我的日期索引转换为datetime:

navs['Date'] = pd.to_datetime(navs['Date'])
navs = navs.set_index('Date')

我该怎么解决这个问题?具有讽刺意味的是,pd.first_valid_index()返回一个引发KeyError的索引。我想我得先对索引做些其他的转换?在


Tags: to函数dataframedatetimedateindexreturndef
1条回答
网友
1楼 · 发布于 2024-09-28 20:43:25

这是因为在上一个问题中,输入(因此x)是一个序列,因此x[index]工作正常。对于数据帧,x[index]需要一个列名。为了访问由索引索引索引的行,您需要x.loc[index]。见documentation here。在

此功能将工作:

def ultimo(x):
    if x.first_valid_index() is None:
        return np.nan
    else:
        return x.loc[x.first_valid_index()]

相关问题 更多 >