在 df 列/时间序列中按索引 -1 选择会引发错误

Selecting by index -1 in a df column / time series throws error

假设我们有一个像这样的简单数据框:

df = pd.DataFrame({'col1':[1,2,3], 'col2':[10,20,30]})

然后我可以select这样的元素

df.col2[0]df.col2[1]

但是如果我想 select 最后一个带有 df.col2[-1] 的元素,它会导致错误消息:

KeyError: -1

我知道有解决方法。例如,我可以做 df.col2[len(df)-1]df.iloc[-1,1]。但是为什么不允许使用 -1 直接索引的更简单版本呢?我是否可能错过了 -1 的另一种简单的 selection 方式?发送

你的DataFrame的索引标签是[0,1,2]。您的代码 df.col2[1] 相当于使用 loc 函数作为 df['col2'].loc[1](或 df.col2.loc[1])。您可以看到您的索引不包含标签“-1”(这就是您收到 KeyError 的原因)。

对于位置索引,你需要使用一个 iloc 函数(你可以在 Pandas 系列和 DataFrame 上使用它),所以你可以做 df['col2'].iloc[-1](或 df.col2.iloc[-1]) .

如您所见,您可以同时使用基于标签的 ('col2') 和基于位置的 (-1) 索引,您不需要选择其中之一作为 df.iloc[-1,1]df.col2[len(df)-1](相当于 df.loc[lend(df)-1,'col2']