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

如何合并两个DataFrame并使用另一个DataFrame的数值替换空值

pd.concat仅负责将两个DataFrame沿指定轴拼接,对于同名列不会做重叠值补全处理,只会保留两份重命名后的同名列。可以用以下两种方案实现需求:

方案1:用combine_first实现(推荐,代码最简)

combine_first的原生逻辑就是用第二个DataFrame的非空值填充第一个DataFrame的对应位置空值,同时自动保留两个DataFrame的所有列,完全匹配你的需求:

import pandas as pd
import numpy as np

# 构造示例df1
df1 = pd.DataFrame([
    [np.nan, 1, 2, 3, 6],
    [4, 5, 6, np.nan, 7]
], columns=['A', 'B', 'C', 'D', 'G'])

# 构造示例df2
df2 = pd.DataFrame([
    [2, 1, 2, 3, 4, 5],
    [4, 5, 6, 8, 8, 8]
], columns=['A', 'B', 'C', 'D', 'E', 'F'])

# 核心合并补全代码
result = df1.combine_first(df2)

# 可选操作:调整列顺序和数值类型,匹配你给出的结果格式
result = result[['A','B','C','D','E','F','G']].astype(int)

输出结果和你要求的完全一致。

方案2:用update实现(适合直接修改原df1的场景)

如果你不需要保留原始df1,想直接在df1的基础上修改,可以用update方法,额外新增df2独有的列即可:

# 仅替换df1的空值,不覆盖原有非空值
df1.update(df2, overwrite=False)
# 新增df2中独有的E、F列
df1[df2.columns.difference(df1.columns)] = df2[df2.columns.difference(df1.columns)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 00:36:09