Python 比较两个dataframe列以查看它们是否具有相同的值

Python 比较两个dataframe列以查看它们是否具有相同的值,python,Python,我有两个dataframe列,看起来像这样: col1 col2 0 A2 B8 1 B8 C3 2 D2 A2 我想识别col1中不在col2中的所有值,反之亦然。在上述示例中,输出为: C3, D2 这两个列表不是唯一的 为什么不将每列转换为一个集合并计算对称差 import pandas as pd df = pd.DataFrame({'col1': ['A2', 'B8', 'D2'],

我有两个dataframe列,看起来像这样:

   col1    col2 
0   A2      B8
1   B8      C3
2   D2      A2 
我想识别col1中不在col2中的所有值,反之亦然。在上述示例中,输出为:

C3, D2 

这两个列表不是唯一的

为什么不将每列转换为一个
集合
并计算对称差

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'])
{'col2': ['C3'], 'col1': ['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\u items
中的每个键都包含该列特有的条目作为其值。这张照片是:

set(['C3', 'D2'])
{'col2': ['C3'], 'col1': ['D2']}
事实上,由于我们有集合,我们可以将其简化为:

exclusive_items = {'col1': col1-col2,
                   'col2': col2-col1}
第1列中的第2列中的第1列中的第2列中的第2列: ['D2']

in_col2_not_in_col1: ['C3']


使用这种方法,是否有一种方法可以知道哪些在col1中,哪些不在col2中,哪些在col2中,哪些不在col1中?@CahnEx严格来说不是,但我添加了一个修改版本来演示这是如何可能的