Python 如何“反合并”数据帧以生成两个不同的集合

Python 如何“反合并”数据帧以生成两个不同的集合,python,pandas,merge,Python,Pandas,Merge,我有两组数据: df1 'Y' A a B b C c D d E e df2 'Y' D d E e F f 我需要转换第一个df1以删除df2中出现的任何数据 我可以很容易地使用SQL来完成,但这不是我的选择 逻辑为“从df1中选择*,其中df1.Y不在从df2中选择Y中” 我似乎无法使用merge正确实现。有什么想法吗? 预期结果: df3 'Y' A a B b C c 在df2保持不变的情况下可以使用

我有两组数据:

df1  
  'Y'  
A a  
B b  
C c  
D d  
E e  

df2  
  'Y'  
D d  
E e  
F f  
我需要转换第一个df1以删除df2中出现的任何数据 我可以很容易地使用SQL来完成,但这不是我的选择 逻辑为“从df1中选择*,其中df1.Y不在从df2中选择Y中” 我似乎无法使用merge正确实现。有什么想法吗? 预期结果:

df3  
  'Y'  
A a  
B b  
C c  
在df2保持不变的情况下

可以使用.isin方法对df1进行子集划分:

我确实喜欢

以下是一个NumPy备选方案:

In [26]: d1[~np.in1d(d1.Y, d2.Y)]
Out[26]:
   Y
A  a
B  b
C  c
还有另一个熊猫解决方案,它使用类似SQL的方法:

相关:和复制:
In [26]: d1[~np.in1d(d1.Y, d2.Y)]
Out[26]:
   Y
A  a
B  b
C  c
In [30]: d1.query('Y not in @d2.Y')
Out[30]:
   Y
A  a
B  b
C  c