将第二个数据帧合并到第一个

时间:2019-02-01 21:51:06

标签: python pandas join merge concat

我要合并两个数据帧,如下所示:

left:

   A  B  C  D    E    F    G    H     
   1  2  3  4    5    6    7    h       
   5  2  3  4  NaN  NaN  NaN  NaN  
   1  2  4  4  NaN  NaN  NaN  NaN  


right:
   E  F  G  H     
   1  2  g  h2 

我想做:

merge=pd.merge(left=left,right=right,left_on=['A','B'], right_on=['E','F'],how='left')

但是我想要看起来像这样的东西:

   A  B  C  D    E    F    G    H     
   1  2  3  4    5    6    7    h
   1  2  3  4    1    2    g    h2
   5  2  3  4  NaN  NaN  NaN  NaN  
   1  2  4  4    1    2    g    h2

有什么想法可以达到预期的效果吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可能需要考虑update

left=left.set_index(['A','B'])
right.index=pd.MultiIndex.from_arrays([right['E'],right['F']])
left.update(right)
left.reset_index(inplace=True)
left
Out[274]: 
   A  B  C  D    E    F    G    H
0  1  2  3  4  1.0  2.0    g   h2
1  5  2  3  4  NaN  NaN  NaN  NaN
2  1  2  4  4  1.0  2.0    g   h2