看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
假设你有一份电商平台的产品数据,包含产品名称和所属类别。现在需要对产品类别进行标准化处理并按照自定义顺序进行分析。
import pandas as pd
data = {
'product': ['iPhone', 'T-Shirt', 'Coffee', 'Laptop', 'Jeans', 'Milk'],
'category': ['Electronics', 'Clothing', 'Food', 'Electronics', 'Clothing', 'Food']
}
df = pd.DataFrame(data)
df
'''
product category
0 iPhone Electronics
1 T-Shirt Clothing
2 Coffee Food
3 Laptop Electronics
4 Jeans Clothing
5 Milk Food
'''
请完成以下要求:
代码如下:
# 参考代码
(
df
.assign(category=lambda x: pd.Categorical(x['category'],
categories=['Electronics', 'Clothing', 'Food'],
ordered=True))
.sort_values('category')
.assign(category_code=lambda x: x['category'].cat.codes)
.reset_index(drop=True)
)
'''
product category category_code
0 iPhone Electronics 0
1 Laptop Electronics 0
2 T-Shirt Clothing 1
3 Jeans Clothing 1
4 Coffee Food 2
5 Milk Food 2
'''
参考代码的思路逻辑:
pd.Categorical()
将 category 列转换为分类数据类型,通过 categories
参数指定自定义顺序,ordered=True
表示这是一个有序分类sort_values('category')
按分类顺序排序,由于已经定义了有序分类,pandas 会自动按照我们指定的顺序排列.cat.codes
属性获取每个类别对应的数字编码,Electronics→0, Clothing→1, Food→2reset_index(drop=True)
重置索引,使输出结果更加整洁这种方法确保了数据类别的标准化处理,便于后续的统计分析和可视化操作,同时保持了业务所需的特定排序顺序。
更新时间:2025-09-10 21:57:21 标签:pandas python 爆炸