You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas分组计算二级子项占一级分组小计的百分比

实现二级分组占一级分组小计的百分比计算

我来帮你搞定这个需求,其实用pandas的分组功能结合transform方法就能轻松实现,步骤清晰易懂:

步骤说明

  1. 首先对col1和col2做二级分组,计算每个组合的col3求和值;
  2. 接着基于一级分组(col1)计算分组小计,利用transform方法把这个小计值广播到对应的二级分组行;
  3. 最后用二级分组的求和值除以对应一级分组的小计,就能得到百分比。

完整代码示例

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:12:27