首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas.Series.cat.rename_categories的问题-获取“类别”必须是唯一的错误

pandas.Series.cat.rename_categories的问题-获取“类别”必须是唯一的错误
EN

Stack Overflow用户
提问于 2022-09-09 01:44:46
回答 1查看 83关注 0票数 1

我对Python很陌生,也做过一些练习。

我在我的数据中有一个专栏,叫做“续集”(用于书籍),数字从1到8不等。

我想做一个名为“续集类”的新专栏,重新命名数字-我希望1被重命名为‘原始’,而任何其他东西都要改名为续集。这个练习建议我使用"pd.Series.cat.rename_categories“来完成这个任务。

我克服的第一个障碍是克服了一个错误,这个错误说我需要有分类数据(最初是int64),我是这样做的:

代码语言:javascript
复制
bookdata['sequels'] = bookdata['sequels'].astype('category')

一切都很好也很好。我认为这将创建我的新专栏:

代码语言:javascript
复制
bookdata["sequelcategory"] = bookdata["sequels"].cat.rename_categories({1: 'original', 2: 'sequel'})

上面的工作原理非常好--我遇到的问题是,我也希望数字3-8也被重新命名为“续集”,这意味着:

代码语言:javascript
复制
bookdata["sequelcategory"] = bookdata["sequels"].cat.rename_categories({1: 'original', 2: 'sequel', 3: 'sequel', 4: 'sequel', 5: 'sequel', 6: 'sequel', 7: 'sequel', 8: 'sequel', })

...returns错误: ValueError:分类类别必须是唯一的。

有人对上面的事有什么建议吗?我知道还有101个其他的方法可以做到这一点,但是我被告知我需要用类别来完成它,而且我的一生都无法解决这个问题。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-09 02:30:33

我们可以在将它们设置为分类之前对它们进行映射,

代码语言:javascript
复制
bookdata = pd.DataFrame({'book series': [1, 2, 3, 4, 5, 1, 1, 2, 6, 8]})
bookdata
###
   book series
0            1
1            2
2            3
3            4
4            5
5            1
6            1
7            2
8            6
9            8
代码语言:javascript
复制
map_dict = {1: 'original', 2: 'sequel', 3: 'sequel', 4: 'sequel', 5: 'sequel', 6: 'sequel', 7: 'sequel', 8: 'sequel'}
bookdata['sequelcategory'] = bookdata['book series'].map(map_dict).astype('category')
bookdata
###
   book series sequelcategory
0            1       original
1            2         sequel
2            3         sequel
3            4         sequel
4            5         sequel
5            1       original
6            1       original
7            2         sequel
8            6         sequel
9            8         sequel
代码语言:javascript
复制
bookdata.info()
###
 #   Column          Non-Null Count  Dtype   
---  ------          --------------  -----   
 0   book series     10 non-null     int64   
 1   sequelcategory  10 non-null     category
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73656526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档