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

标签 python python-3.x pandas dataframe concatenation

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

   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

关于python - 将具有重叠索引但从不重叠值的 Pandas DataFrames 连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54106361/

相关文章:

python - 当准确度已经是 1.0 时停止 Keras 训练

python - 有没有办法用 less "nesting"写?

具有大/无序文本文件的 Python-pandas

python - 在 Pandas 中,如何用最接近的非纳米值替换零值?

python - Django:在 Docker 容器中运行时找不到模块

python - 在 Mac 上使用 PyInstaller 时出现问题

Python 3.x 无法将 Decimal() 序列化为 JSON

python - 来自 x、y 值的 Matplotlib 直方图,日期时间月份作为 bin

python - 检查字符串是否为二进制

Python return 语句不会中断 for 循环