我对Python很陌生,也做过一些练习。
我在我的数据中有一个专栏,叫做“续集”(用于书籍),数字从1到8不等。
我想做一个名为“续集类”的新专栏,重新命名数字-我希望1被重命名为‘原始’,而任何其他东西都要改名为续集。这个练习建议我使用"pd.Series.cat.rename_categories“来完成这个任务。
我克服的第一个障碍是克服了一个错误,这个错误说我需要有分类数据(最初是int64),我是这样做的:
bookdata['sequels'] = bookdata['sequels'].astype('category')一切都很好也很好。我认为这将创建我的新专栏:
bookdata["sequelcategory"] = bookdata["sequels"].cat.rename_categories({1: 'original', 2: 'sequel'})上面的工作原理非常好--我遇到的问题是,我也希望数字3-8也被重新命名为“续集”,这意味着:
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个其他的方法可以做到这一点,但是我被告知我需要用类别来完成它,而且我的一生都无法解决这个问题。
任何帮助都将不胜感激!
发布于 2022-09-09 02:30:33
我们可以在将它们设置为分类之前对它们进行映射,
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 8map_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 sequelbookdata.info()
###
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 book series 10 non-null int64
1 sequelcategory 10 non-null categoryhttps://stackoverflow.com/questions/73656526
复制相似问题