gpt4 book ai didi

python - df.first_valid_index() 返回一个引发 KeyError 的索引?

转载 作者:行者123 更新时间:2023-12-01 03:54:37 34 4
gpt4 key购买 nike

我正在尝试按月对 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.first_valid_index() 返回的内容:

x.index: <class 'pandas.tseries.index.DatetimeIndex'>
x.index.values: ['2015-03-30T02:00:00.000000000+0200' '2015-03-31T02:00:00.000000000+0200'] <class 'numpy.ndarray'> of type <class 'numpy.datetime64'>
x.first_valid_index(): 2015-03-30 00:00:00 <class 'pandas.tslib.Timestamp'>

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

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

我该如何解决这个问题?具有讽刺意味的是,pd.first_valid_index() 返回的索引会引发 KeyError。我的猜测是我必须首先对索引进行一些其他转换?

最佳答案

这是因为在您之前的问题中,输入(因此 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()]

关于python - df.first_valid_index() 返回一个引发 KeyError 的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697617/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com