连接具有重叠索引但从不重叠值的 Pandas DataFrames

Lev*_*ich 2 python concatenation dataframe python-3.x pandas

我有两个任意形状的 DataFrame:

   A     B    C
0  A0   B0   C0
1  A1   B1   C1
2  A2   B2  NaN
3  A3  NaN  NaN
4  A4  NaN  NaN
Run Code Online (Sandbox Code Playgroud)

     A    B   C
2  NaN  NaN  C2
3  NaN   B3  C3
4  NaN   B4  C4
5   A5   B5  C5
6   A6   B6  C6
Run Code Online (Sandbox Code Playgroud)

两个 DataFrame 具有重叠索引。在有重叠的地方,对于给定的列,NaN一个 DataFrame 中有一个非,而另一个 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
Run Code Online (Sandbox Code Playgroud)

我提出的解决方案是:

df3 = pd.concat([pd.concat([df1[col].dropna(), df2[col].dropna()]) for col in df1.columns], axis=1)
Run Code Online (Sandbox Code Playgroud)

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

San*_*apa 7

使用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
Run Code Online (Sandbox Code Playgroud)