我想合并两个数据框。两者具有相同的列名,但行数不同。
然后,较小数据框中的值将替换另一个数据框中的值
到目前为止,我尝试使用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]})
答案 0 :(得分:1)
这可以通过concat
和drop_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