如何在pandas中group by分组后将行数据转为列展示
pandas分组行转列统计计数实现方案
你需要的是按两个字段分组后将其中一个字段的取值转为列、输出对应组合计数的结果,可以用以下任意一种方法实现:
- 方法1:使用
crosstab(最适配频率统计场景)
import pandas as pd df1= pd.read_csv('Employee_Attrition.csv') df4=df4[['BusinessTravel','JobRole']] # 直接生成符合要求的结果 res = pd.crosstab( index=df4['BusinessTravel'], columns=df4['JobRole'], fill_value=0 # 无匹配的组合填充为0 ) print(res)
- 方法2:使用
pivot_table透视表实现
res = df4.pivot_table( index='BusinessTravel', columns='JobRole', aggfunc='size', # 统计分组行数 fill_value=0 )
- 方法3:在原有groupby逻辑基础上修改
# 先按两个字段分组计数,再把JobRole转为列 res = df4.groupby(['BusinessTravel','JobRole']).size().unstack(fill_value=0)
以上三种方法输出的结果都符合预期:行索引为BusinessTravel的不同取值,列名为JobRole的各个分类,单元格为对应分组的计数值。
内容的提问来源于stack exchange,提问作者anirban karak
相关产品推荐
相关产品推荐

