繁体   English   中英

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

[英]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]
)
    

有人有想法吗?

谢谢 !

您可以使用combine_first() ,如下所示:

df_result = df1.combine_first(df2)

combine_first()的工作原理如下:

通过用另一个 DataFrame 中的非空值填充一个 DataFrame 中的 null 值来组合两个 DataFrame 对象。生成的 DataFrame 的行和列索引将是两者的并集。

结果:

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
res_expected=df1.append(df2,ignore_index=True)

这应该工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM