熊猫合并名称相同但行不同的DataFrame列

时间:2019-08-29 15:11:09

标签: python pandas dataframe merge multiple-columns

我想合并两个数据框。两者具有相同的列名,但行数不同。

然后,较小数据框中的值将替换另一个数据框中的值

到目前为止,我尝试使用pd.merge

pd.merge(df1, df2, how='left', on='NodeID)

但是我不知道如何告诉merge命令对列“ X”和“ Y”使用正确数据框中的值。

df1 = pd.DataFrame(data={'NodeID': [1, 2, 3, 4, 5], 'X': [0, 0, 0, 0, 0], 'Y': [0, 0, 0, 0, 0]})
df2 = pd.DataFrame(data={'NodeID': [2, 4], 'X': [1, 1], 'Y': [1, 1]})

结果应如下所示:

df3 = pd.DataFrame(data={'NodeID': [1, 2, 3, 4, 5], 'X': [0, 1, 0, 1, 0], 'Y':[0, 1, 0, 1, 0]})

1 个答案:

答案 0 :(得分:1)

这可以通过concatdrop_duplicates

完成
pd.concat([df2,df1]).drop_duplicates('NodeID').sort_values('NodeID')
Out[763]: 
   NodeID  X  Y
0       1  0  0
0       2  1  1
2       3  0  0
1       4  1  1
4       5  0  0