比较来自多个数据帧的单元格

时间:2018-08-03 13:38:51

标签: python pandas

我不确定如何利用熊猫来解决这个问题。我正在尝试将一个数据帧中的每个ID的值与其他数据帧进行比较。下面是一个示例。

Data Frame A        Data Frame B        Data Frame C
      ID    Val           ID    Val         ID      Val
0     12345 10      0     12345 11      0   12345   11
1     23456 12      1     23456 12      1   23456   12
2     34567 13      2     34567 13      2   34567   13
3     45678 16                          3   56789   12

假设存在三个数据帧(dfa,dfb和dfc),每个数据帧都有ID和值。 ID 12345的值为10、11和11,因此将被忽略。所有三个数据帧的ID 23456的值均为12,因此将以某种方式对其进行标记。也许打印出ID 23456是相同的。往前看,由于ID 34567具有相同的值,因此同样适用于ID 34567,但由于ID 45678在数据帧B或数据帧C中不存在,因此将被忽略。

我已经想到了一些方法,但是它涉及字典和列表。我想看看是否有办法通过继续利用熊猫来更好地做到这一点。

1 个答案:

答案 0 :(得分:1)

df = A.merge(B,left_on='ID',right_on='ID').merge(C,left_on='ID',right_on='ID').rename({'Val_x':'Val_A','Val_y':'Val_B','Val':'Val_C'})
df['flag']=0
df.loc[(df['Val_A']==df['Val_B']) & (df['Val_B']==df['Val_C']),'flag']=1

标志列就是您想要的。