连接两个数据帧,其中一个数据帧是其他数据集的子集

时间:2019-10-12 18:57:02

标签: pandas

我有两个数据帧

DF1

Context

DF2

 x y z   
 0 0 0  
 1 1 1  
 2 2 2  
 3 3 3  
 4 4 4  
 5 5 5  

我要合并这两个数据帧,以更新数据帧1

结果应该是

 x y z    
 1 1 10   
 4 4 20  

我使用:

 x y z   
 0 0 0  
 1 1 10  
 2 2 2  
 3 3 3  
 4 4 20  
 5 5 5

我得到的

pd.concat([df1,df2], sort=False).drop_duplicates(['x'],keep='last')

有什么办法可以使用内置的熊猫方法来获得这个?

1 个答案:

答案 0 :(得分:1)

您需要保留mergeffilldrop多余的列

df1.merge(df2, on=['x','y'], how='left', suffixes=['_1','']).ffill(1).drop('z_1',1).astype(int)

Out[104]:
   x  y   z
0  0  0   0
1  1  1  10
2  2  2   2
3  3  3   3
4  4  4  20
5  5  5   5