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

如何在Pandas中合并不同长度的DataFrame并求和对应列?

按name列汇总多个DataFrame的数值列求和实现

示例数据构造

先构造你给出的两个DataFrame:

import pandas as pd

df1 = pd.DataFrame({'name': ['a', 'b', 'c'], 'value': [3, 4, 5]})
df2 = pd.DataFrame({'name': ['b', 'a'], 'value': [2, 1]})

方法一:concat + groupby(推荐,支持多DataFrame扩展)

这种方法适合合并任意数量的DataFrame,自动对所有数值列按name分组求和:

# 合并所有目标DataFrame,按name分组并求和,保留name为普通列
result = pd.concat([df1, df2]).groupby('name', as_index=False).sum()

执行后得到的结果:

name  value
0    a      4
1    b      6
2    c      5

如果存在多个数值列(比如value1、value2),该方法会自动对所有数值列分别求和,无需额外修改代码。

方法二:merge + 逐列相加(适合两个DataFrame场景)

通过左连接保留所有df1中的name,填充缺失值为0后对应列相加:

# 按name左连接两个DataFrame,添加后缀区分同名列
merged = df1.merge(df2, on='name', how='left', suffixes=('_df1', '_df2'))
# 计算value列的和,缺失值用0填充
merged['value'] = merged['value_df1'].fillna(0) + merged['value_df2'].fillna(0)
# 提取需要的列
result = merged[['name', 'value']]

若有多个数值列,可通过循环批量处理:

# 假设存在value1、value2两个数值列
for col in ['value1', 'value2']:
    merged[col] = merged[f'{col}_df1'].fillna(0) + merged[f'{col}_df2'].fillna(0)
result = merged[['name', 'value1', 'value2']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:45:21