我怎样才能“合并”pandas数据帧以产生2个不同的集合

时间:2016-12-24 21:47:37

标签: 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轻松地完成它,但这对我来说不是一个选择 逻辑是'select * from df1 where df1.Y not in (select Y from df2)' 我似乎无法使用merge获得正确的实现。有任何想法吗? 期望的结果:

df3  
  'Y'  
A a  
B b  
C c  

df2不变

2 个答案:

答案 0 :(得分:4)

您可以使用df1方法对.isin()进行分组:

df1[~df1.Y.isin(df2.Y)]

#   Y
#A  a
#B  b
#C  c

答案 1 :(得分:2)

我喜欢@Psidom's Pandas solution

以下是NumPy替代方案:

In [26]: d1[~np.in1d(d1.Y, d2.Y)]
Out[26]:
   Y
A  a
B  b
C  c

还有另一个Pandas解决方案,它使用类似SQL的query()方法:

In [30]: d1.query('Y not in @d2.Y')
Out[30]:
   Y
A  a
B  b
C  c