如何在两个Pandas DataFrame对象上执行SQL样式不相交或设置差异?

JPK*_*Kab 7 python pandas

我正在尝试使用Pandas解决一个问题,因为一个白痴DBA没有备份现在崩溃的数据集,所以我试图找到两列之间的差异.由于我不会涉及的原因,我使用的是Pandas而不是数据库.

我想做的是,给出:

Dataset A = [A, B, C, D, E]  
Dataset B = [C, D, E, F]
Run Code Online (Sandbox Code Playgroud)

我想找到不相交的价值观.

Dataset A!=B = [A, B, F]
Run Code Online (Sandbox Code Playgroud)

在SQL中,这是标准的集合逻辑,根据方言的不同而不同,但是标准函数.我如何在熊猫中优雅地应用它?我想输入一些代码,但我所拥有的甚至是远程正确的.这是一种我不知道我不知道的情况.....熊猫为交叉和联合设定了逻辑,但没有任何关于不相交/设定差异的东西.

谢谢!

Zel*_*ny7 9

你可以使用这个set.symmetric_difference功能:

In [1]: df1 = DataFrame(list('ABCDE'), columns=['x'])

In [2]: df1
Out[2]:
   x
0  A
1  B
2  C
3  D
4  E

In [3]: df2 = DataFrame(list('CDEF'), columns=['y'])

In [4]: df2
Out[4]:
   y
0  C
1  D
2  E
3  F

In [5]: set(df1.x).symmetric_difference(df2.y)
Out[5]: set(['A', 'B', 'F'])
Run Code Online (Sandbox Code Playgroud)