Ответ 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 см. официальную документацию