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

Python中如何使用pandas groupby计算DataFrame分组内百分比

Pandas按日期分组计算条目值占组内总和百分比实现方案

你要的分组占比计算可以直接通过groupby配合transform方法实现,无需遍历分组或额外做表合并,具体实现如下:

核心实现代码

import pandas as pd

# 如已读取好数据可跳过这部分示例数据构造
df = pd.DataFrame({
    'DATE': ['2021-10-01']*3 + ['2021-11-01']*4,
    'SCHEDULED': [2]*7,
    'ARTICLE_CODE': ['001','002','003','001','002','003','004']
})

# 计算每个ARTICLE_CODE的SCHEDULED在所属日期分组内的占比
df['PERCENTAGE'] = (df['SCHEDULED'] / df.groupby('DATE')['SCHEDULED'].transform('sum') * 100).round(1)

实现说明

  • groupby('DATE')['SCHEDULED'].transform('sum')会为每一行返回其所属日期分组下SCHEDULED列的总和,返回序列长度和原表完全一致,不会打乱原表行顺序
  • 用当前行的SCHEDULED值除以对应分组总和,乘100后通过round控制小数位数即可得到百分比:
    • 要得到示例中10月分组33.3的效果,保留1位小数用.round(1)
    • 要得到11月分组25的整数效果,改为.round(0)即可
  • 计算前建议先确认SCHEDULED列为数值类型,若为字符串类型可先执行df['SCHEDULED'] = pd.to_numeric(df['SCHEDULED'])做转换,避免计算报错

运行结果

执行代码后得到的DataFrame和你预期的结构完全一致:

DATESCHEDULEDARTICLE_CODEPERCENTAGE
2021-10-01200133.3
2021-10-01200233.3
2021-10-01200333.3
2021-11-01200125.0
2021-11-01200225.0
2021-11-01200325.0
2021-11-01200425.0

内容的提问来源于stack exchange,提问作者Kraus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:42:19