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

2024-01-13

我正在尝试使用 Pandas 来解决一个白痴 DBA 没有对现已崩溃的数据集进行备份的问题,因此我正在尝试查找两列之间的差异。由于我不会详细说明的原因,我使用的是 Pandas 而不是数据库。

我想做的是,考虑到:

Dataset A = [A, B, C, D, E]  
Dataset B = [C, D, E, F]

我想找到不相交的值。

Dataset A!=B = [A, B, F]

在 SQL 中,这是标准的集合逻辑,根据方言的不同以不同的方式完成,但这是一个标准函数。我如何在 Pandas 中优雅地应用它?我很想输入一些代码,但我所拥有的都不是正确的。这是一种我不知道我不知道的情况...... Pandas 为交集和并集设置了逻辑,但没有为不相交/集合差异设置逻辑。

谢谢!


您可以使用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'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐