Python 比较两个dataframe列以查看它们是否具有相同的值
我有两个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'],
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严格来说不是,但我添加了一个修改版本来演示这是如何可能的