首页 > 解决方案 > 如何合并多个不同长度的数据帧

问题描述

我想通过一个公共列合并多个数据框,以便所有不匹配的数据都有 NA。

D1:                             D2:
    ID  val1  val2                  ID   Target   
    1    x     y                    1      0
    1    x     y                    1      1
    1    a     b
    1    a     c

 D3:                             D4:
    ID  random  new                  ID   Targetnew  
    1    x     y                    1      1       
    1    x     y                    1      0      
    1    a     b
    1    a     c
So the merge will become 

  ID  val1  val2 Target  Targetnew random new 
    1    x     y     0   1          x      y
    1    x     y     1   0          x      y
    1    a     b     NA  NA         a      b
    1    a     c     NA  NA         a      c 

标签: pythonpandasdataframe

解决方案


使用pd.concat()和删除多个重复的列:

df = pd.concat([D1, D2, D4, D3], axis="columns")
df = df.loc[:, ~df.columns.duplicated()]
>>> df
   ID val1 val2  Target  Targetnew random new
0   1    x    y     0.0        1.0      x   y
1   1    x    y     1.0        0.0      x   y
2   1    a    b     NaN        NaN      a   b
3   1    a    c     NaN        NaN      a   c

推荐阅读