2015-12-22 20 views
8

Birden çok sütuna sahip, ancak yalnızca bir ortak ('metin') olan iki ayrı panda veri karesi (df1 ve df2) var.Pandalar iki veri çerçevesini karşılaştırır ve bir sütunda hangi eşleşmeleri kaldırır

df2 ve df1 ortak sütunlarının herhangi birinde bir eşleşme bulunmayan df2 numaralı her satırı bulmak istiyorum.

df1

A B text 
45 2 score 
33 5 miss 
20 1 score 

C D text 
.5 2 shot 
.3 2 shot 
.3 1 miss 

df2 Sonucu df bunda isin yöntemi kullanmak

C D text 
.5 2 shot 
.3 2 shot 

mümkün mü (o df1 oluşur beri bayan içeren satırı kaldırın) senaryo?

cevap

8

Sorduğunuz gibi, bunu isin (merge s pahalıya başvurmadan) kullanarak verimli bir şekilde yapabilirsiniz.

>>> df2[~df2.text.isin(df1.text.values)] 
C D text 
0 0.5 2 shot 
1 0.3 2 shot 
+0

Bu sadece başlık okuma aklıma geldi ne –

1

DÜZENLEME:

import numpy as np 

mergeddf = pd.merge(df2,df1, how="left") 

result = mergeddf[(np.isnan(mergeddf['A']))][['C','D','text']] 
1

Bunları birleştirmek ve bir değerse ve tek çizgiler tutabilir.

df2[pd.merge(df1, df2, how='outer').isnull().any(axis=1)] 

veya isin kullanabilirsiniz:

df2[~df2.text.isin(df1.text)] 
İlgili konular