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

如何用Python Pandas按索引合并两个DataFrame并填充缺失值

解决Pandas不同结构DataFrame按索引合并并填充缺失值的问题

嘿,刚接触Pandas的话,踩pd.concat()的坑太正常了——它只是简单把两个DataFrame堆叠起来,完全没法实现你要的“用DF2填充DF1对应索引缺失值”的需求。咱们直接上正确的解决方案:

最佳方法:使用combine_first()

Pandas专门提供了combine_first()方法来处理这种场景,逻辑完全匹配你的需求:

  • 以DF1为基础框架,保留它的所有行、列以及已有值
  • 自动按索引和列名对齐DF2的数据
  • 用DF2中对应索引-位置的值,填充DF1里的缺失值(NaN)
  • 同时保留DF2中DF1没有的行和列(如果有的话)

示例代码

import pandas as pd

# 假设你的DF1和DF2已经定义好
Output_DF = DF1.combine_first(DF2)

直观例子帮你理解

假设我们有两个结构不同的DataFrame:
DF1:

index列A列B
010NaN
1NaN20

DF2:

index列A列C
0NaN30
14050
26070

运行DF1.combine_first(DF2)后得到的Output_DF:

index列A列B列C
010NaN30
1402050
260NaN70

你看:

  • DF1里索引1的列A缺失值,被DF2的40填充了
  • DF1有值的地方(索引0的列A、索引1的列B)全部保留
  • DF2独有的列C和索引2的行也被完整保留

为什么pd.concat()不行?

pd.concat([DF1, DF2])只是做简单的行拼接,会产生重复索引的行,完全不会处理缺失值的填充——比如上面的例子用concat的话,会得到5行数据(DF1的2行+DF2的3行),完全不是你要的合并填充效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:49:41