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

基于col1和col2合并两个DataFrame并对多列求和遇重复问题

解决DataFrame按多列分组求和出现重复项的问题

你遇到的重复分组问题,核心原因是用于分组的col1/col2列存在隐形差异,比如:

  • col1字符串前后有空格(比如df1里是"aaa ",df2里是"aaa")
  • col2数据类型不一致(比如一个是字符串"2020",一个是数字2020)
  • 大小写不一致(比如"AAA"和"aaa")

解决步骤:

1. 先清洗数据,消除隐形差异

# 处理df1:去除字符串列空格、统一类型
df1['col1'] = df1['col1'].str.strip()
df1['col2'] = df1['col2'].astype(int)

# 处理df2:同样操作
df2['col1'] = df2['col1'].str.strip()
df2['col2'] = df2['col2'].astype(int)

2. 重新执行分组求和

df = pd.concat([df1, df2]).groupby(['col1', 'col2'], as_index=False).sum()

执行后就能得到预期结果:

col1  col2  col3  col4  col5
0  aaa  2020  14.6   7.6  12.7
1  bbb  2019   4.5  10.4  17.6
2  ccc  2020   9.2  10.1   7.7

备选方案:直接合并后逐列求和

如果确定两个DataFrame的col1+col2组合完全匹配,也可以用merge的方式直接相加,更直观:

# 按分组键合并两个df,区分来自不同df的列
merged_df = pd.merge(df1, df2, on=['col1', 'col2'], suffixes=('_df1', '_df2'))

# 对目标列求和
for col in ['col3', 'col4', 'col5']:
    merged_df[col] = merged_df[f'{col}_df1'] + merged_df[f'{col}_df2']

# 提取最终结果列
result_df = merged_df[['col1', 'col2', 'col3', 'col4', 'col5']]

这个方法的优势是:如果存在不匹配的分组键,会直接显示NaN,方便快速排查数据问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:05:24