Python 为什么-1在数据帧重置其索引后导致键错误,以及如何使其工作

Python 为什么-1在数据帧重置其索引后导致键错误,以及如何使其工作,python,python-3.x,pandas,Python,Python 3.x,Pandas,假设我有一个pandas数据帧,在重置其索引后-1索引不起作用。我如何让它像以前一样工作,为什么在这种情况下不工作 您可以考虑使用 df.Loor())/>代码>或 df.iLoCo()/属性。 在你的情况下,那可能是 (见附件) data.rerset_index()['Date'].iloc(-1) 除了重置索引,您还可以简单地写入数据。索引[-1]尝试以下操作: list(data.reset_index()['Date'])[-1] 我认为reset_index()与此无关。从数

假设我有一个pandas数据帧,在重置其索引后-1索引不起作用。我如何让它像以前一样工作,为什么在这种情况下不工作


您可以考虑使用<代码> df.Loor())/>代码>或<代码> df.iLoCo()/<代码>属性。 在你的情况下,那可能是 (见附件)

data.rerset_index()['Date'].iloc(-1)
除了重置索引,您还可以简单地写入
数据。索引[-1]

尝试以下操作:

list(data.reset_index()['Date'])[-1]
我认为reset_index()与此无关。从数据帧中选择特定列将返回一个序列。我们可能需要将其转换为一个列表,以便通过负索引位置进行访问

这是我在示例虚拟df上尝试的一个小示例:

'''
year    key val
2019    a   3
2019    a   4
2019    b   3
2019    c   5
2020    d   6
2020    e   1
2020    f   2
'''

import pandas as pd

df = pd.read_clipboard()

print(df)
资料来源:

   year  key  val
0  2019  a      3
1  2019  a      4
2  2019  b      3
3  2019  c      5
4  2020  d      6
5  2020  e      1
6  2020  f      2
这两个抛出键错误:

mask = df['year'][-1]
print(mask)

输出:

KeyError: -1
2020
这两项工作:

mask = list(df.reset_index()['year'])[-1]

输出:

KeyError: -1
2020

是的,这很有效。但是为什么在重置其索引之前不需要此强制转换,因为重置索引()将应用于数据帧。当您访问该数据帧的特定列时,它是pandas.series。不过,值得进一步研究的是,我并不认为我的解释是无可辩驳的:)。事实上,我只是在一个随机样本虚拟df上进行了试验,似乎没有重置索引它也不会起作用。这就是数据['Date'][-1]也应该抛出相同的错误。这会抛出错误,因为原始dfI中的日期是索引。为了澄清,我在我的答案中添加了一个小示例。