2016-12-24 72 views
3

我有2組數據:如何I「去合併」熊貓數據幀以產生2個不同的組

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)' 我似乎無法得到使用合併的實施權。有任何想法嗎? 期望的結果:

df3 
    'Y' 
A a 
B b 
C c 

與DF2不變

+0

相關:http://stackoverflow.com/questions/28901683/pandas-get-rows-which-are-in-other-dataframe and dupe:http://stackoverflow.com/questions/32651860/python-pandas-how-to-find-rows-in-one-dataframe - 丁非氟另一 – EdChum

回答

4

可以子集df1.isin()方法:

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

# Y 
#A a 
#B b 
#C c 
2

我喜歡@Psidom's Pandas solution

這裏是一個NumPy的替代:

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

和又一熊貓溶液,它使用類似於SQL的query()方法:

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