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

标签 python pandas

我正在尝试使用 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'])

关于python - 如何在两个 Pandas DataFrame 对象上执行 SQL 样式不相交或设置差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405975/

相关文章:

Python Pytz 美国/太平洋时区问题

python - 查找并打印总和为 100 的每个唯一组合,并返回 1 到 100 之间数字的所有此类组合的计数

python - 由于 EnvironmentError : [Errno 2] numpy-1. 20.1.dist-infor\\METADATA,无法安装包

python - 在 CENTOS 上使用 for 循环将 CSV 转换为 Json 问题

python - 如何将 'dictionary' 的列读入 pandas

python - 将pandas df写入excel时将选定的列类型更改为百分比

python - 重复函数提取相似信息

python - 从返回的数据中删除索引

python - 我可以在 python 格式函数打印行中使用换行符吗?

python - 从 DataFrame 列中获取字符串并将其分配给 pandas 中的其他列