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

无需新建pandas DataFrame,计算分组总计占比

解决思路:在现有DataFrame中添加分组占比列

核心方法

利用pandas的groupby.transform()方法,直接在原DataFrame上生成分组总计并计算占比,无需创建新的DataFrame或进行合并操作。

步骤示例

假设你的DataFrame包含分组列(比如category)和数值列(比如value),操作如下:

  • 确定分组依据列:根据你的样本数据,指定用于分组的列(如category)
  • 计算分组总计:使用transform('sum')获取每个数据行对应分组的总计值,该方法会返回与原DataFrame同长度的Series
  • 生成占比列:直接在原DataFrame上创建新列,用数值列除以对应分组的总计值

代码示例

# 直接在原DataFrame中添加占比列
df['占比'] = df['value'] / df.groupby('category')['value'].transform('sum')

# 可选:将占比格式化为百分比(保留两位小数)
df['占比'] = df['占比'].apply(lambda x: f"{x:.2%}")

关键说明

  • transform()方法的优势在于它会保留原DataFrame的索引结构,返回的Series可以直接和原数据进行运算,避免了额外的合并或索引对齐操作
  • 如果需要处理多列或更复杂的分组逻辑,只需调整groupby的分组键和数值列即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:36:14