gpt4 book ai didi

python - .loc 用于 Pandas 中的分类索引

转载 作者:行者123 更新时间:2023-12-02 06:37:00 25 4
gpt4 key购买 nike

我尝试使用 .loc 访问基于 CategoricalIndex 的 Pandas 数据帧的行,但收到​​ TypeError。最小的工作示例是

import pandas as pd

df = pd.DataFrame({'foo': rand(3), 'future_index': [22, 13, 87]})
df['future_index'] = df['future_index'].astype('category')
df = df.set_index('future_index')

然后,在尝试访问与标签 13 对应的行时

df.loc[13]

我明白了

TypeError: cannot do label indexing on <class 'pandas.core.indexes.category.CategoricalIndex'> with these indexers [13] of <class 'int'>

尽管

13 in df.index

真实。我知道我最终可以获得索引 13

df.index.get_loc(13)

但是,为什么上述更简单的方法不起作用?我错过了什么?

干杯。

最佳答案

对我来说:

print (df.loc[pd.CategoricalIndex([13])])
foo
future_index
13 2

但是如果如上所述转换为 str EdChum它工作得很好:

df = pd.DataFrame({'foo': [1,2,3], 'future_index': [22, 13, 87]})
df['future_index'] = df['future_index'].astype(str).astype('category')
df = df.set_index('future_index')
print (df)

print (df.loc['13'])
foo 2
Name: 13, dtype: int64

关于python - .loc 用于 Pandas 中的分类索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46039400/

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