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

pandas两个DataFrame相加时缺失行列不产生多余NaN的方法

pandas DataFrame 对齐相加(无多余NaN)实现方案

最简洁优雅的实现方式是直接调用DataFrame内置的add方法,传入fill_value=0参数即可,无需手动做索引对齐、空值填充等冗余操作,pandas内部会自动完成索引、列的并集对齐,运算逻辑完全匹配需求:

  • 两个DataFrame同时存在的行、列位置:正常执行数值加法
  • 仅在单个DataFrame存在的位置:将缺失方的数值按0计算,最终保留原有的单值
  • 两个DataFrame都不存在的位置:结果保留NaN,不会生成多余的填充值

示例代码

import pandas as pd
import numpy as np

# 构造测试数据
index1 = pd.Index(["a", "b"])
data1 = np.full(shape=(2, 2), fill_value=1.0)
df1 = pd.DataFrame(data1, index=index1, columns=index1)

index2 = pd.Index(["b", "c"])
data2 = np.full(shape=(2, 2), fill_value=2.0)
df2 = pd.DataFrame(data2, index=index2, columns=index2)

# 核心运算逻辑
df_result = df1.add(df2, fill_value=0)

运算后得到的df_result输出如下,和预期结果完全一致:

a    b    c
a  1.0  1.0  NaN
b  1.0  3.0  2.0
c  NaN  2.0  2.0

注意:不要直接使用+运算符执行DataFrame加法,+等价于调用add时不传入fill_value(默认fill_value=None),只要任意一方缺失对应位置的数值,就会直接返回NaN,这也是示例中直接相加得到大量多余NaN的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:48:27