首页 > 解决方案 > Pandas 合并具有相同名称但不同行的 DataFrame 列

问题描述

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

然后,较小数据帧中的值应替换其他数据帧中的值

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

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

但我不知道如何告诉合并命令将正确数据框中的值用于列“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]})

标签: pythonpandasdataframemergemultiple-columns

解决方案


这可以通过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

推荐阅读