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

Python中合并重复行求和并创建新列遇ValueError问题求助

问题分析与解决方案

错误原因

你的代码存在两个核心问题:

  • 分组键逻辑错误:需求是按COL1分组对COL2求和,但你写的groupby(['COL2', 'COL1'])会先按COL2再按COL1分组,完全不符合需求。
  • 未指定目标求和列:transform('sum')会对分组后的所有数值列求和,返回多列的DataFrame,而你试图将其赋值给单列COL3,因此触发ValueError。

正确实现方式

方式1:保留原数据行数,每行显示对应COL1的求和值

如果想在原DataFrame的每一行都添加COL3,显示该行COL1对应的COL2总和:

df['COL3'] = df.groupby('COL1')['COL2'].transform('sum')

执行后原DataFrame结果:

COL1COL2COL3
AB510
AB510
AA22
AC33
AD812
AD412

方式2:生成去重后的COL1与对应总和(匹配你给出的示例)

如果只想得到去重后的COL1和对应的求和结果,直接使用groupby+sum即可,不需要transform:

result_df = df.groupby('COL1', as_index=False)['COL2'].sum().rename(columns={'COL2': 'COL3'})

执行后得到的result_df即为目标格式:

COL1COL3
AA2
AB10
AC3
AD12

补充说明

  • groupby('COL1')['COL2']明确指定仅对COL2列求和,避免返回多列数据。
  • as_index=False确保分组后的COL1作为普通列而非索引,方便后续处理。
  • rename用于将求和后的列名修改为你需要的COL3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:32:35