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

如何合并索引重叠但无值重叠的Pandas DataFrames

合并重叠索引的DataFrame并填补NaN值

这是个很典型的DataFrame数据补全场景,你当前的逐列处理方法虽然能解决问题,但确实有更简洁的内置方案可以一步到位——Pandas的combine_first()函数完美适配你的需求!

方法原理

combine_first()的核心逻辑正好匹配你的场景:它会优先保留第一个DataFrame的非NaN值,用第二个DataFrame中的对应非NaN值填补第一个DataFrame的空缺,同时自动合并两个DataFrame中所有存在的索引和列,完全不需要手动逐列处理。

具体实现代码

先还原你给出的两个示例DataFrame:

import pandas as pd
import numpy as np

# 第一个DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3', 'A4'],
    'B': ['B0', 'B1', 'B2', np.nan, np.nan],
    'C': ['C0', 'C1', np.nan, np.nan, np.nan]
})

# 第二个DataFrame
df2 = pd.DataFrame({
    'A': [np.nan, np.nan, np.nan, 'A5', 'A6'],
    'B': [np.nan, 'B3', 'B4', 'B5', 'B6'],
    'C': ['C2', 'C3', 'C4', 'C5', 'C6']
}, index=[2, 3, 4, 5, 6])

只需要一行代码就能完成合并补全:

df_combined = df1.combine_first(df2)

验证结果

运行后得到的df_combined完全符合你的期望:

A   B   C
0  A0  B0  C0
1  A1  B1  C1
2  A2  B2  C2
3  A3  B3  C3
4  A4  B4  C4
5  A5  B5  C5
6  A6  B6  C6

方案优势

  • 代码简洁易读,无需手动遍历列,降低出错概率
  • 自动处理索引和列的匹配,不用担心遗漏行或列
  • 基于Pandas底层优化实现,比手动循环效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:50:55