如何知道 astype('category').cat.codes 分配的标签?

新手上路,请多包涵

我有以下名为 language 的数据框

         lang          level
0      english         intermediate
1      spanish         intermediate
2      spanish         basic
3      english         basic
4      english         advanced
5      spanish         intermediate
6      spanish         basic
7      spanish         advanced

我通过使用将每个变量分类为数字

language.lang.astype('category').cat.codes

language.level.astype('category').cat.codes

分别。获取如下数据框:

       lang   level
0      0       1
1      1       1
2      1       0
3      0       0
4      0       2
5      1       1
6      1       0
7      1       2

现在,我想知道是否有办法获得每个值对应的原始值。我想知道 0 中的值 lang 列对应于英语等等。

有什么功能可以让我取回这些信息吗?

原文由 Marisa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以生成字典:

 c = language.lang.astype('category')

d = dict(enumerate(c.cat.categories))
print (d)
{0: 'english', 1: 'spanish'}

那么如果有必要的话是可能的 map

 language['code'] = language.lang.astype('category').cat.codes

language['level_back'] = language['code'].map(d)
print (language)
      lang         level  code level_back
0  english  intermediate     0    english
1  spanish  intermediate     1    spanish
2  spanish         basic     1    spanish
3  english         basic     0    english
4  english      advanced     0    english
5  spanish  intermediate     1    spanish
6  spanish         basic     1    spanish
7  spanish      advanced     1    spanish

原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 .cat.categories 索引,如下所示:

 df.lang.cat.categories[0]

输出:

 'english'

原文由 Scott Boston 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题