如何在Pandas中按Group 1分组计算Count列的总计值?
如何在Pandas分组表格中按Group1计算Count的分组总计
现有一个已应用
groupby操作的Pandas表格,索引为Group0和Group1的多层索引,包含Group2和Count列,数据如下:
Group 0 Group 1 Group 2 Count A X1 577.5000 6 894.8700 2 X2 2697.3100 48 2697.3100 1 B3 2697.3100 30 B C12 34.2700 9 39.2700 3 需要新增
Group 1 Total by Count列,值为同一Group1分组下Count列的总和,得到如下结果:
Group 0 Group 1 Group 2 Count Group 1 Total by Count A X1 577.5000 6 8 894.8700 2 8 X2 2697.3100 48 49 2697.3100 1 49 B3 2697.3100 30 30 B C12 34.2700 9 12 39.2700 3 12
直接用groupby结合transform方法就能实现需求,不需要用cumsum。transform会把分组计算的总和自动广播到该分组的每一行,刚好匹配你的需求。
代码示例
如果你的DataFrame索引是命名为Group0和Group1的多层索引:
df['Group 1 Total by Count'] = df.groupby(level='Group1')['Count'].transform('sum')
如果习惯用索引位置指定(Group1是第2层索引,位置为1):
df['Group 1 Total by Count'] = df.groupby(level=1)['Count'].transform('sum')
原理说明
groupby(level='Group1'):按Group1这个索引层级进行分组['Count'].transform('sum'):对每个分组的Count列求和,transform会保持结果与原DataFrame的行数一致,将分组总和赋值给该组的每一行,这样同一Group1下的所有行都会拥有相同的总计值
执行上述代码后,你的DataFrame就会新增目标列,结果和你期望的完全一致。
内容的提问来源于stack exchange,提问作者Krishna
相关产品推荐
相关产品推荐

