2016-04-12 32 views
1

Pandas veri çerçevesini filtrelemeye çalışıyorum. Verilerin biçimi, aralarındaki boşluk ile bir veri bloğu.Pandalarda koşullu aramalar Dataframe

data1, data2 

val1, val2 
val1, val2 

val1, val2 

Blokları filtrelemek, ancak boşlukları veri çerçevesinde tutmak istiyorum. muhtemelen benim sleeop- var,

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

benim hattına bu yöntemleri takarak denedim ama işe yaramış görünmüyor:

df = df.loc[(df['data2'] >= threshold) and (df['data2'] == '')] 

ama bu hatayı döndürür: yapmalısınız Benim kodudur yoksun beyin ama eğer birisi

+0

've' çünkü barfs öyleyse, dizi benzeri yapılar karşılaştırmasını yaptığınız sayıl değerlerini anlar Tek bir maç varsa, 'True' geri dönerse belirsiz olur mu? bitli işleçler tüm dizi üzerinde çalışırlar ve bir dizi boolean değeri döndürürler – EdChum

cevap

2

and'un kullanımı, tercümanın gerçekten bunu desteklemeyen iki türü kullanarak bir boole değeri bulmaya çalıştığınızı düşünmesine neden olur. Bu durumda, muhtemelen & aradığınız:

df['data2'] >= threshold) & (df['data2'] == '') 

Örnek

In [1]: import numpy as np 

In [2]: np.array([True, False]) & np.array([True, True]) 
Out[2]: array([ True, False], dtype=bool) 

In [3]: np.array([True, False]) and np.array([True, True]) 
------------------------------------------------------------------- -------- 
ValueError        Traceback (most recent  call last) 
<ipython-input-3-76eeded6cdad> in <module>() 
----> 1 np.array([True, False]) and np.array([True, True]) 

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 
+0

Tamam, ancak bunu bir & değiştirir bir TypeError: geçersiz tür karşılaştırması istisnası – GreenGodot

+0

@GreenGodot "df ['data2'] çıktısını gönderebilir misiniz? > = eşik 've 'df [' data2 '] ==' ''? –

+0

Ah, boş dizeyle yanlış bir şekilde comaprison yapıyordum. Bunun yerine, isnull() işlevini çağırmalıydım. – GreenGodot