orVe andpiton ifadeleri gerektiren truth-değerlerine. İçin pandasKullanmak "Bitsel" bu yüzden bu belirsiz olarak kabul edilir |(veya) ya da &operasyonları (ve):
result = result[(result['var']>0.25) | (result['var']<-0.25)]
Bunlar, bu tür veri yapıları için element olarak or(veya and) vermek üzere aşırı yüklenmiştir .
Bu ifadeye biraz daha açıklama eklemek için:
Eğer almak istediğinizde istisnası atılır boola pandas.Series:
>>> import pandas as pd
>>> x = pd.Series([1])
>>> bool(x)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Ne isabet operatör bir yerdi örtülü için işlenen dönüştürülür bool(kullandığınız orama aynı zamanda için olur and, ifve while):
>>> x or x
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>> x and x
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>> if x:
... print('fun')
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>> while x:
... print('fun')
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Bu 4 tabloların yanısıra bazı gizlemek birkaç piton işlevleri vardır bool(gibi aramaları any, all, filter, ...) bu normalde sorunlu değildir pandas.Seriesancak şeyiyle ben bu hatırlatmak istedik.
Sizin durumunuzda istisna gerçekten yararlı değildir, çünkü doğru alternatiflerden bahsetmez . İçin andve orşunları kullanabilirsiniz (öğe bazında karşılaştırmalar istiyorsanız):
Operatörleri kullanıyorsanız , operatör önceliği nedeniyle parantezinizi doğru ayarladığınızdan emin olun .
Orada birkaç mantıksal numpy fonksiyonları olmalıdır üzerinde çalışmak pandas.Series.
İstisnada belirtilen alternatifler ifveya ile karşılaşırsanız daha uygundur while. Bunların her birini kısaca açıklayacağım:
Serinizin boş olup olmadığını kontrol etmek istiyorsanız :
>>> x = pd.Series([])
>>> x.empty
True
>>> x = pd.Series([1])
>>> x.empty
False
Python normalde , açık bir boole yorumlaması yoksa lenkapların (örneğin ...) gth değerini doğru-değer olarak yorumlar. Python benzeri bir kontrol istiyorsanız, şunları yapabilirsiniz: veya yerine .listtupleif x.sizeif not x.emptyif x
Eğer senin Seriesiçeren bir ve yalnızca bir boolean değeri:
>>> x = pd.Series([100])
>>> (x > 50).bool()
True
>>> (x < 50).bool()
False
Serinizin ilk ve tek öğesini kontrol etmek istiyorsanız ( .bool()boole içeriği olmasa bile çalışır):
>>> x = pd.Series([100])
>>> x.item()
100
Eğer kontrol etmek istiyorsanız tüm veya herhangi bir öğe-boş değil ya-Yanlış değil sıfır şöyledir:
>>> x = pd.Series([0, 1, 2])
>>> x.all() # because one element is zero
False
>>> x.any() # because one (or more) elements are non-zero
True
|yerine kullanınor