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

Pandas分组求和结果二次求和及新增second2列实现方法咨询

解决方案

先保存分组求和的结果,方便后续复用:

import numpy as np
import pandas as pd

df = pd.read_csv('test_python.csv')
# 存储分组求和结果,避免重复计算
group_sum = df.groupby('fifth').sum()

需求1:对分组求和结果进行二次求和

根据实际需求,有两种常用实现方式:

  • 按列单独二次求和(得到每列的总合计):
    # 输出各列的最终求和结果,比如buy=6、cheese=8这种形式
    col_total = group_sum.sum()
    print(col_total)
    
  • 整体二次求和(得到所有数值的总合计):
    # 输出所有分组求和值的总和,比如6+8+12=26
    total_sum = group_sum.sum().sum()
    print(total_sum)
    

需求2:基于原数据second列创建second2新列,填充分组求和结果

核心是将原数据每行所属fifth分组的求和结果,映射到新列中,以下是两种实现方式:

方法1:用transform直接生成(推荐,无需额外字典转换)

如果second2要填充该行所属分组的前三列总和:

# 计算每个fifth分组的前三列总和,自动匹配到原数据对应行
df['second2'] = df.groupby('fifth')[['buy', 'cheese', 'file']].transform('sum').sum(axis=1)

如果只需填充某一列的分组求和结果(比如仅buy列):

df['second2'] = df.groupby('fifth')['buy'].transform('sum')

方法2:用map关联分组结果字典

先把分组求和结果转为字典,再映射到原数据:

# 以buy列的分组求和为例,生成{fifth值: buy求和值}的字典
buy_sum_dict = group_sum['buy'].to_dict()
# 将原数据fifth列对应的值映射为second2的内容
df['second2'] = df['fifth'].map(buy_sum_dict)

若要填充分组前三列的总和,先计算分组行总和再转字典:

group_row_sum = group_sum.sum(axis=1).to_dict()
df['second2'] = df['fifth'].map(group_row_sum)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:50:38