如何在不丢失任何行的情况下合并两个数据帧

时间:2016-01-14 14:56:02

标签: python-2.7 pandas dataframe

我有两个数据框:

df1 =

Id ColA ColB ColC
1  aa   bb   cc
3  11   ww   55
5  11   bb   cc


df2 =

Id ColD ColE ColF
1  ff   ee   rr
2  ww   rr   55
3  hh   11   22
4  11   11   cc
5  cc   bb   aa

我需要合并这两个数据帧以获得以下结果:

result =

Id ColA ColB ColC  ColD  ColE  ColF
1  aa   bb   cc    ff    ee    rr
2  NaN  NaN  NaN   ww    rr    55
3  11   ww   55    hh    11    22
4  NaN  NaN  NaN   11    11    cc
5  11   bb   cc    cc    bb    aa

我这样合并:

import pandas as pd

result = pd.merge(df1,df2,on='Id')

但是我的结果如下所示,而不是预期的上述结果:

result = 
Id ColA ColB ColC  ColD  ColE  ColF
1  aa   bb   cc    ff    ee    rr
3  11   ww   55    hh    11    22
5  11   bb   cc    cc    bb    aa

1 个答案:

答案 0 :(得分:1)

根据documentation of merge,您需要将'how'参数指定为outer(默认值为inner,这与您获得的内容一致):

  

外部:使用两个框架中的键联合(SQL:全外连接)

     

内部:使用两个框架中的键交叉(SQL:内部连接)