Panda在列值上的数据帧之间存在差异

时间:2015-06-22 18:02:22

标签: python pandas dataframe difference

我无法找到一种方法来使数据帧具有基于列的2个数据帧的差异。所以基本上:

dfA = ID, val
      1, test
      2, other test

dfB = ID, val
      2, other test

我想要dfC根据列dfA - dfB保留差异ID

dfC = ID, val
      1, test

2 个答案:

答案 0 :(得分:5)

合并ID

上的数据框
dfMerged = dfA.merge(dfB, left_on='ID', right_on='ID', how='outer') # defaults to inner join.

在合并的数据框中,使用后缀_x&来避免名称冲突。 _y表示左右源数据帧。

因此,您最终会(最有可能)val_xval_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"])]