看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)在处理数据时,经常需要将字符串列转换为分类类型以提高性能和内存效率。现有包含产品评级的数据,需要按自定义顺序排序。
源数据:
import pandas as pd
df = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'rating': ['good', 'excellent', 'poor', 'average']
})
print("原始数据:")
print(df)
输出结果:
原始数据:
product rating
0 A good
1 B excellent
2 C poor
3 D average
要求:
期望输出:
product rating
2 C poor
3 D average
0 A good
1 B excellent
代码如下:
(df
.assign(rating=pd.Categorical(df['rating'],
categories=['poor', 'average', 'good', 'excellent'],
ordered=True))
.sort_values('rating')
)
输出结果:
product rating
2 C poor
3 D average
0 A good
1 B excellent
代码逻辑分三步:首先使用pd.Categorical()创建有序分类数据,指定categories参数定义排序顺序和 ordered=True
启用排序功能;然后通过 assign()
方法将原rating列替换为分类版本;最后用sort_values()按分类顺序排序,确保数据按poor→average→good→excellent的正确顺序排列。
(完)
更新时间:2025-09-21 22:12:47 标签:pandas python 分类数据 排序