Pandas: 如何将两个不完整的数据帧连接或合并为一个更完整的数据帧

Pandas: How to concat or merge two incomplete dataframe into one more complete dataframe

我想将两个不完整的数据框与关于相似索引的相同数据(理论上)连接起来。 我试过 pd.concat 但我没能得到我需要的东西。

这是我想要做的一个简单示例:

     df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B4"],
        "C": ["C0", "C1", "C2", "B5"],
        "D": [np.nan,np.nan,np.nan,np.nan,]
    },
    index=[0, 1, 2, 3],)

df2 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A5", "A6"],
        "B": ["B0", "B1", "B5", "B6"],
        "C": [np.nan,np.nan,np.nan,np.nan,],
        "D": ["D0", "D1", "D5", "D6"],
    },
    index=[0, 1, 5, 6]
)

res_expected = pd.DataFrame(
    {
        "A": ["A0",  "A1",  "A2",  "A3", "A5", "A6"],
        "B": ["B0",  "B1",  "B2",  "B3",  "B5", "B6"],
        "C": ["C0",  "C1",  "C2",  "B5",np.nan,np.nan,],
        "D": ["D0",  "D1",  np.nan,np.nan,"D5", "D6"],
    },
    index=[0, 1, 2, 3, 5, 6]
)
    

有人有想法吗?

谢谢!

res_expected=df1.append(df2,ignore_index=True)

这应该有效

可以使用combine_first(),如下:

df_result = df1.combine_first(df2)

combine_first() 工作方式如下:

Combine two DataFrame objects by filling null values in one DataFrame with non-null values from other DataFrame. The row and column indexes of the resulting DataFrame will be the union of the two.

结果:

print(df_result)

    A   B    C    D
0  A0  B0   C0   D0
1  A1  B1   C1   D1
2  A2  B2   C2  NaN
3  A3  B4   B5  NaN
5  A5  B5  NaN   D5
6  A6  B6  NaN   D6