Pandas按品牌车型分组,将车龄分类转为列统计各分类计数
报错原因
df.groupby()方法要求多个分组键必须放在同一个列表中传入,你原代码直接用逗号分隔三个列名作为参数,pandas会将第二个参数'Model'识别为axis参数,因此抛出找不到对应轴的错误。
实现代码
有两种常用方式可以实现你需要的分组计数+列转行效果:
方式1:使用pd.crosstab(更简便,专门适配交叉计数场景)
import pandas as pd # 以Brand和Model为行索引,car_age分类为列,统计计数,空缺值填0 output_count = pd.crosstab( index=[df['Brand'], df['Model']], columns=df['car_age'], fill_value=0 ).reset_index()
方式2:修改你原来的groupby逻辑
# 多个分组键放入列表,统计每组大小 grouped_count = df.groupby(['Brand', 'Model', 'car_age']).size() # 将car_age从索引转为列,空缺值填充为0 output_count = grouped_count.unstack(fill_value=0).reset_index()
两种方法得到的输出结果都会和你期望的格式完全一致,且car_age列会按你预设的编号顺序自动排序。
内容的提问来源于stack exchange,提问作者NickVan
相关产品推荐
相关产品推荐

