Получить сопоставление категориальных переменных в pandas

Я делаю это, чтобы сделать категориальные переменные числа

>>> df = pd.DataFrame({'x':['good', 'bad', 'good', 'great']}, dtype='category')

       x
0   good
1    bad
2   good
3  great

Как получить сопоставление между исходными значениями и новыми значениями?

Ответ 1

Вы можете создать сопоставление словаря путем перечисления (аналогично созданию словаря из списка, создавая словарные ключи из индексов списка):

>>> dict( enumerate(df['x'].cat.categories) )

{0: 'bad', 1: 'good', 2: 'great'}

Чтобы убедиться, что это работает, просто распечатайте основные целые коды следующим образом:

>>> df['x'].cat.codes

0    1
1    0
2    1
3    2
dtype: int8

Или выполните переход из категории в целое число в строку:

>>> df['x'].cat.codes.map( dict( enumerate(df['x'].cat.categories) ) ).astype('category')

Для общей информации о категориальных переменных pandas см. официальную документацию