Доступ к кодам категорий для объектов Index в Pandas

1

Как я могу получить доступ к кодам категорий 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]
Теги:
pandas
indexing
series
categorical-data

1 ответ

3
Лучший ответ

Вы можете получить доступ к атрибуту codes непосредственно из CategoricalIndex:

i.codes
# array([0, 1, 4, 0, 3, 2], dtype=int8)

И, как в вашем примере, вы можете преобразовать это в список Python:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню