Как я могу получить доступ к кодам категорий 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]
Вы можете получить доступ к атрибуту codes
непосредственно из CategoricalIndex
:
i.codes
# array([0, 1, 4, 0, 3, 2], dtype=int8)
И, как в вашем примере, вы можете преобразовать это в список Python:
i.codes.tolist()
# [0, 1, 4, 0, 3, 2]