Pandas分组计算二级子项占一级分组小计的百分比
实现二级分组占一级分组小计的百分比计算
我来帮你搞定这个需求,其实用pandas的分组功能结合transform方法就能轻松实现,步骤清晰易懂:
步骤说明
- 首先对
col1和col2做二级分组,计算每个组合的col3求和值; - 接着基于一级分组(
col1)计算分组小计,利用transform方法把这个小计值广播到对应的二级分组行; - 最后用二级分组的求和值除以对应一级分组的小计,就能得到百分比。
完整代码示例
import pandas as pd # 初始化示例数据 df = pd.DataFrame({ 'col1': ['a','a','a','a','a','b','b','b','b','b'], 'col2': ['c','c','d','d','e','c','c','d','d','e'], 'col3': [2,2,2,2,2,2,2,2,2,2] }) # 计算二级分组的求和值 grouped_sum = df.groupby(['col1', 'col2'])['col3'].sum() # 计算百分比:二级分组和 / 对应一级分组的小计 percent_result = grouped_sum / grouped_sum.groupby(level=0).transform('sum') # 查看结果(和你期望的格式完全一致) print(percent_result)
运行结果
运行后会输出你想要的格式:
col1 col2 a c 0.4 d 0.4 e 0.2 b c 0.4 d 0.4 e 0.2 Name: col3, dtype: float64
这里的groupby(level=0)是按分组索引的第一级(也就是col1)来分组,transform('sum')会保留原索引结构,把每个一级分组的总和对应到每一行,这样除法运算就能自动匹配计算百分比啦。
内容的提问来源于stack exchange,提问作者SanMu
相关产品推荐
相关产品推荐

