我有这样一个数据框df
:
a b
10 2
3 1
0 0
0 4
....
# about 50,000+ rows
我希望选择 df[:5, 'a']
。但是当我打电话df.loc[:5, 'a']
,我收到错误:KeyError: 'Cannot get right slice bound for non-unique label: 5
。当我调用df.loc[5]
时,结果包含 250 行,而当我使用 df.iloc[5]
时只有一行。为什么会发生这种情况以及如何正确索引它?先感谢您!
最佳答案
错误消息解释here :如果索引不是单调的,则两个切片边界必须是索引的唯一成员
。
.loc
和 .iloc
之间的区别是基于 label
与 整数位置
的索引 - see docs 。 .loc
用于选择单个标签
或标签的切片
。这就是 .loc[5]
选择 index
值为 250 的所有行(错误与非唯一索引有关)的原因。相反,iloc
选择第 5 行(0 索引)。这就是为什么您只获得一行,并且索引值可能是也可能不是 5
。希望这有帮助!
关于python - 使用 python-pandas 索引数据帧时无法获得非唯一标签的正确切片绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935294/