gpt4 book ai didi

python - pandas:使用 .loc 选择索引标签数组

转载 作者:太空狗 更新时间:2023-10-29 22:30:46 25 4
gpt4 key购买 nike

考虑这个数据框:

df = pd.DataFrame({u'A': {2.0: 2.2,
7.0: 1.4,
8.0: 1.4,
9.0: 2.2}, u'B': {2.0: 7.2,
7.0: 6.3,
8.0: 4.4,
9.0: 5.0}})

看起来像这样:

      A       B
2 2.2 7.2
7 1.4 6.3
8 1.4 4.4
9 2.2 5.0

我想获得标签为 27 的索引(数字,不是字符串)

df.loc[[2, 7]]

报错!

IndexError: indices are out-of-bounds

但是,df.loc[7]df.loc[2] 工作正常并且符合预期。另外,如果我用字符串而不是数字定义数据帧索引:

df2 = pd.DataFrame({u'A': {'2': 2.2,
'7': 1.4,
'8': 1.4,
'9': 2.2},
u'B': {'2': 7.2,
'7': 6.3,
'8': 4.4,
'9': 5.0}})

df2.loc[['2', '8']]

它工作正常。

这不是我对 df.loc 的预期行为(这是一个错误还是只是一个问题?)我可以传递一组数字作为标签索引而不仅仅是位置吗?

我可以将所有索引转换为字符串,然后使用 .loc 进行操作,但这对我的其余代码来说非常不方便。

感谢您的宝贵时间!

最佳答案

这是 0.12 中的错误。 0.13 版修复了这个问题(IOW、标签选择、当您传递列表时数字或字符串是否应该起作用)。

可以这样做(尽管使用内部方法):

In [10]: df.iloc[df.index.get_indexer([2,7])]
Out[10]:
A B
2 2.2 7.2
7 1.4 6.3

关于python - pandas:使用 .loc 选择索引标签数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844985/

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