Skip to main content
 首页 » 编程设计

python之将具有重叠索引但从不重叠值的 Pandas DataFrames 连接起来

2025年05月04日21hnrainll

我有两个任意形状的数据框:

   A     B    C 
0  A0   B0   C0 
1  A1   B1   C1 
2  A2   B2  NaN 
3  A3  NaN  NaN 
4  A4  NaN  NaN 

和

     A    B   C 
2  NaN  NaN  C2 
3  NaN   B3  C3 
4  NaN   B4  C4 
5   A5   B5  C5 
6   A6   B6  C6 

两个 DataFrame 有重叠的索引。在存在重叠的地方,对于给定的列,一个 DataFrame 中有一个非 NaN,而另一个 DataFrame 中有一个 NaN。我怎样才能将这些连接起来,以便我可以获得一个包含所有值且没有 NaNs 的 DataFrame:

    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 

我建议的解决方案是:

df3 = pd.concat([pd.concat([df1[col].dropna(), df2[col].dropna()]) for col in df1.columns], axis=1) 

但是,理想情况下我不会逐列工作。

请您参考如下方法:

使用combine_first :

df = df1.combine_first(df2) 
 
print(df) 
    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