合并两个长度不同的Python pandas数据框,但保留输出数据框中的所有行。

18 浏览
0 Comments

合并两个长度不同的Python pandas数据框,但保留输出数据框中的所有行。

我有以下问题:我有两个长度不同的Pandas数据帧,其中包含一些具有相同值的行和列,以及一些不同的行和列,如下所示:

df1:                                 df2:
      Column1  Column2  Column3           ColumnA  ColumnB ColumnC
    0    a        x        x            0    c        y       y
    1    c        x        x            1    e        z       z
    2    e        x        x            2    a        s       s
    3    d        x        x            3    d        f       f
    4    h        x        x
    5    k        x        x            

我现在想要的是将这两个数据帧合并,以便如果ColumnA和Column1具有相同的值,则将df2中的行附加到df1中的相应行中,如下所示:

df1:
    Column1  Column2  Column3  ColumnB  ColumnC
  0    a        x        x        s        s
  1    c        x        x        y        y
  2    e        x        x        z        z
  3    d        x        x        f        f
  4    h        x        x        NaN      NaN
  5    k        x        x        NaN      NaN

我知道可以通过以下方式进行合并:

df1.merge(df2,left_on='Column1', right_on='ColumnA')

但是这个命令会删除在两个文件的Column1和ColumnA中不相同的所有行。相反,我希望在df1中保留这些行,并且仅在其他行的列中将NaN赋给它们,如上所示。是否有一种简便的方法在Pandas中实现这个?

0