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

如何对索引基本一致的两个DataFrame进行内容相加?附示例

如何对索引/列基本一致的两个DataFrame进行内容相加?

嘿,这个场景我太熟了!当你需要让两个索引、列部分重叠的DataFrame按对应位置相加,并且把其中一方缺失的行/列默认当作0来处理时,pandas的add()方法搭配fill_value=0参数就是最优解。

先还原你给出的示例数据:

import pandas as pd

# 构建df1
df1 = pd.DataFrame(
    [[0, 3, 1], [3, 0, 2], [1, 2, 0]],
    index=['A', 'B', 'C'],
    columns=['A', 'B', 'C']
)

# 构建df2
df2 = pd.DataFrame(
    [[0, 1, 1, 0], [1, 0, 3, 2], [1, 3, 0, 0], [0, 2, 0, 0]],
    index=['A', 'B', 'C', 'D'],
    columns=['A', 'B', 'C', 'D']
)

为什么不直接用+运算符?

如果你直接写df1 + df2,结果里会出现大量NaN——因为df1没有D行和D列,这些位置在相加时会被视为缺失值,完全不符合你想要把缺失位置当作0相加的需求。

最优实现方式

用add()方法并指定fill_value=0,它会自动对齐两个DataFrame的索引和列,把一方缺失的位置用0填充后再相加:

# 执行相加,缺失值用0填充
result = df1.add(df2, fill_value=0)
# 如果需要整数类型,转换一下
result = result.astype(int)
print(result)

输出结果完全符合你的预期:

A  B  C  D
A  0  4  2  0
B  4  0  5  2
C  2  5  0  0
D  0  2  0  0

额外说明

这个方法的核心优势:

  • 无需手动补全两个DataFrame的缺失行/列,pandas会自动完成索引和列的对齐
  • 可以灵活指定填充值(不止0,其他数值也适用)
  • 性能高效,比手动循环或者合并后处理的速度快得多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:22:03