我有两组数据:
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不变
答案 0 :(得分:4)
您可以使用df1
方法对.isin()
进行分组:
df1[~df1.Y.isin(df2.Y)]
# Y
#A a
#B b
#C c
答案 1 :(得分:2)
以下是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