访问Pandas中的Index对象的类别代码

时间:2018-06-16 14:33:25

标签: python pandas indexing series categorical-data

如何访问Pandas CategoricalIndex的类别代码?

pd.Series.cat.codes是我用于系列的内容,但此方法不适用于Index个对象。目前,我首先转换为系列,但这是昂贵的,似乎反模式。

这是一个最小的例子:

values = list('abeadc')

s = pd.Series(pd.Categorical(values, categories=list('abcde')))

print(s.cat.codes.tolist())
# [0, 1, 4, 0, 3, 2]

i = pd.CategoricalIndex(pd.Categorical(values, categories=list('abcde')))

print(i.cat.codes.tolist())
# AttributeError: 'CategoricalIndex' object has no attribute 'cat'

print(i.to_series().cat.codes.tolist())
# [0, 1, 4, 0, 3, 2]

1 个答案:

答案 0 :(得分:3)

您可以直接从codes

访问CategoricalIndex属性
i.codes
# array([0, 1, 4, 0, 3, 2], dtype=int8)

并且,在您的示例中,您可以将其转换为Python列表:

i.codes.tolist()
# [0, 1, 4, 0, 3, 2]