比较两个数据帧列以查看它们是否具有相同的值

时间:2017-07-19 14:42:14

标签: python

我有两个数据帧列,如下所示:

   col1    col2 
0   A2      B8
1   B8      C3
2   D2      A2 

我想识别col1中不在col2中的所有值,反之亦然。在上面的例子中,输出将是:

C3, D2 

两个列表都不是唯一的。

2 个答案:

答案 0 :(得分:0)

为什么不将每列转换为set并计算对称差异?

import pandas as pd

df = pd.DataFrame({'col1': ['A2', 'B8', 'D2'],
                   'col2': ['B8', 'C3', 'A2']})

print set(df['col1']).symmetric_difference(set(df['col2']))

打印:

set(['C3', 'D2'])

编辑:

如果你想跟踪哪些元素来自哪里,你可以调整它并创建一个新的字典,如下所示:

col1 = set(df['col1'])
col2 = set(df['col2'])

exclusive_items = {'col1': [x for x in col1 if x not in col2],
                   'col2': [x for x in col2 if x not in col1]}

print exclusive_items

exclusive_items中的每个键都包含该列唯一的条目作为其值。这打印:

{'col2': ['C3'], 'col1': ['D2']}

事实上,正如我们设定的那样,我们可以将其简化为:

exclusive_items = {'col1': col1-col2,
                   'col2': col2-col1}

答案 1 :(得分:0)

import pandas as pd

df = pd.DataFrame({'col1': ['A2', 'B8', 'D2'],
                   'col2': ['B8', 'C3', 'A2']})


in_col1_not_in_col2 = list(set(df['col1'])-(set(df['col2'])))
in_col2_not_in_col1 = list(set(df['col2'])-(set(df['col1'])))

print('in_col1_not_in_col2: ')
print(in_col1_not_in_col2)
print('in_col2_not_in_col1: ')
print(in_col2_not_in_col1)
  

in_col1_not_in_col2:   ['D2']

     

in_col2_not_in_col1:   [ 'C3']