如何在Pandas中按Manager分组统计多列数值的总和
问题描述
拥有一份需要统计分析的数据集:
Manager hire_request hire_approval hired transfer_request transfer_approval transfer Adam 0 0 0 0 1 0 Blake 1 0 0 0 0 0 Blake 0 1 0 0 0 0 Blake 1 0 0 0 0 0 Chris 0 0 0 1 0 0 Chris 0 1 0 0 0 0
需求是按Manager字段分组,统计各业务列的数值总和。尝试执行以下代码:
df.groupby(['Manager'])['Manager','hire_request','hire_approval', 'hired', 'transfer_request','transfer_approval', 'transfer'].count()
但无法得到期望输出:
Manager hire_request hire_approval hired transfer_request transfer_approval transfer Adam 0 0 0 0 1 0 Blake 2 1 0 0 0 0 Chris 0 1 0 1 0 0
请问该如何实现这一统计需求?
解决方案
你用错了聚合方法——count()是统计非空值的数量,而你需要的是数值求和,应该用sum()方法。
另外,分组后不需要把Manager列放进聚合的列列表里(分组后它会作为索引),可以简化代码:
# 正确代码 result = df.groupby('Manager')[['hire_request','hire_approval', 'hired', 'transfer_request','transfer_approval', 'transfer']].sum() # 若需要将Manager从索引转为普通列,可添加reset_index result = result.reset_index()
执行后就能得到你期望的结果:
Manager hire_request hire_approval hired transfer_request transfer_approval transfer 0 Adam 0 0 0 0 1 0 1 Blake 2 1 0 0 0 0 2 Chris 0 1 0 1 0 0
内容的提问来源于stack exchange,提问作者Coding_Nubie
相关产品推荐
相关产品推荐

