【问题标题】:Pandas: How to concat or merge two incomplete dataframe into one more complete dataframePandas:如何将两个不完整的数据帧合并或合并为一个完整的数据帧
【发布时间】:2021-10-16 15:21:21
【问题描述】:

我想将两个不完整的数据框与关于相似索引的相同数据(理论上)连接起来。 我尝试使用 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]
)
    

有人有想法吗?

谢谢!

【问题讨论】:

    标签: python pandas merge concatenation outer-join


    【解决方案1】:

    可以使用combine_first(),如下:

    df_result = df1.combine_first(df2)
    

    combine_first() 的工作原理如下:

    通过在一个 DataFrame 中填充空值来组合两个 DataFrame 对象 来自其他 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
    

    【讨论】:

    • 太棒了!非常感谢!!
    • @timebis 很高兴为您提供帮助!编程愉快!
    【解决方案2】:
    res_expected=df1.append(df2,ignore_index=True)
    

    这应该可以工作

    【讨论】:

    • 感谢您的回答,但它不起作用。我希望它与索引合并。问候
    猜你喜欢
    • 2021-09-11
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 2022-11-25
    相关资源
    最近更新 更多