代码之家  ›  专栏  ›  技术社区  ›  aviss

连接两个不同大小的数据帧(熊猫)

  •  0
  • aviss  · 技术社区  · 6 年前

    我有两个数据帧,具有唯一性 id s它们共享一些列,但不是全部。我需要创建一个组合数据框,它将包含缺少的行 身份证件 它来自第二个数据帧。尝试合并和合并,没有运气。可能太晚了,我的大脑停止工作了。谢谢你的帮助!

       df1 = pd.DataFrame({
            'id': ['a','b','c','d','f','g','h','j','k','l','m'],
            'metric1': [123,22,356,412,54,634,72,812,129,110,200],
            'metric2':[1,2,3,4,5,6,7,8,9,10,11]
            })
    
    
    df2 = pd.DataFrame({
        'id': ['a','b','c','d','f','g','h','q','z','w'],
        'metric1': [123,22,356,412,54,634,72,812,129,110]
        })
    df2
    

    结果应该如下所示:

        id  metric1 metric2
    0   a   123     1.0
    1   b   22      2.0
    2   c   356     3.0
    3   d   412     4.0
    4   f   54      5.0
    5   g   634     6.0
    6   h   72      7.0
    7   j   812     8.0
    8   k   129     9.0
    9   l   110     10.0
    10  m   200     11.0
    11  q   812     NaN
    12  z   129     NaN
    13  w   110     NaN
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   BENY    6 年前

    在这种情况下,使用 combine_first

    df1.set_index('id').combine_first(df2.set_index('id')).reset_index()
    Out[766]: 
       id  metric1  metric2
    0   a    123.0      1.0
    1   b     22.0      2.0
    2   c    356.0      3.0
    3   d    412.0      4.0
    4   f     54.0      5.0
    5   g    634.0      6.0
    6   h     72.0      7.0
    7   j    812.0      8.0
    8   k    129.0      9.0
    9   l    110.0     10.0
    10  m    200.0     11.0
    11  q    812.0      NaN
    12  w    110.0      NaN
    13  z    129.0      NaN
    
        2
  •  0
  •   Echo9k    3 年前

    如果您有许多df要组合,您可能会发现 pd.concat

    pd.concat([df_1, df_2, ..., df_n])