我无法找到一种方法来使数据帧具有基于列的2个数据帧的差异。所以基本上:
dfA = ID, val
1, test
2, other test
dfB = ID, val
2, other test
我想要dfC
根据列dfA - dfB
保留差异ID
dfC = ID, val
1, test
答案 0 :(得分:5)
合并ID
上的数据框dfMerged = dfA.merge(dfB, left_on='ID', right_on='ID', how='outer') # defaults to inner join.
在合并的数据框中,使用后缀_x
&来避免名称冲突。 _y
表示左右源数据帧。
因此,您最终会(最有可能)val_x
和val_y
。然后根据需要比较这些列。例如:
dfMerged['x_y_test'] = dfMerged.val_y == dfMerged.val_x
# gives you a column with a comparison of val_x, val_y.
将此作为掩码,以便在您的问题中找到所需的dfC
。
答案 1 :(得分:1)
这对你有用吗?
dfC = dfB[dfB["ID"] == dfA["ID"]]
这个怎么样:
dfC = dfB[dfB["ID"].isin(dfA["ID"])]