2014-07-10 34 views
5

Ben de başka dataframe meydana biri dataframe gelen satırları hariç tutmak için çalışıyorum:Sütunları karşılaştırarak başka bir veri çerçevesinden bir python pandası veri çerçevesinin satırlarını nasıl filtreleyebilirsiniz?

import pandas 

df = pandas.DataFrame({'A': ['Chr1', 'Chr1', 'Chr1','Chr1', 'Chr1', 'Chr1','Chr2','Chr2'], 'B': [10,20,30,40,50,60,15,20]}) 

errors = pandas.DataFrame({'A': ['Chr1', 'Chr1'], 'B': [20,50]}) 

Sonuç olarak, hataların eşit df satırları dışarı bırakılmalıdır:

df: 
'A' 'B' 
Chr1 10 
Chr1 30 
Chr1 40 
Chr1 60 
Chr2 15 
Chr2 20 

Bu df.merge ile çalışmak gibi görünmüyor ve veri çerçeveleri oldukça büyük olduğundan, tüm satırlarda yinelemek istemiyorum.

iyisi,

David

cevap

6

hataları için fazladan sütun

errors['temp'] = 1 

iki dataframes

merged_df = pandas.merge(df,errors,how='outer') 

Şimdi 'temp' olarak tek satırları tutmak Birleştirme ekle NaN

merged_df = merged_df[ merged_df['temp'] != 1 ] 
del merged_df['temp'] 

print merged_rdf 

     A B 
0 Chr1 10 
2 Chr1 30 
3 Chr1 40 
5 Chr1 60 
6 Chr2 15 
7 Chr2 20 
4

iki sütun için yapabileceğiniz:

print df[ ~df['A'].isin(errors['A']) | ~df['B'].isin(errors['B']) ] 
İlgili konular