2015-12-08 7 views
5

Poniższy kod wyświetli wartość True, ponieważ seria zawiera co najmniej jeden element większy niż 1. Jednak wydaje się nieco niepoprawny. Czy istnieje bardziej Pythoniczny sposób zwracania wartości True, jeśli seria zawiera liczbę, która jest> określoną wartością?Sprawdź, czy seria pandas ma co najmniej jeden element większy niż wartość

import pandas as pd 

s = pd.Series([0.5, 2]) 
print True in (s > 1) 

prawda

EDIT: Nie tylko powyżej odpowiedź un-pythonowy, to czasami powrócić nieprawidłowy wynik dla jakiegoś powodu. Na przykład:

s = pd.Series([0.5]) 
print True in (s < 1) 

Fałsz

Odpowiedz

7

Można użyć any sposób sprawdzić, czy warunek ten jest True przynajmniej dla jednej wartości:

In [36]: (s > 1).any() 
Out[36]: True 
+0

Jak przedłużyć ten operację do zestawu kolumn, aby powrócił, jeśli między wszystkimi wartościami jest co najmniej jedna wartość większa od zera? –

+0

@FedericoGentile masz na myśli coś takiego jak 'any (axis = 1) .any()'? Najpierw zostanie sprawdzone we wszystkich wierszach w podzbiorze i wyprodukuje serię Pand. Po drugie, sprawdzisz serie dla każdej wartości "True". Jeśli nie, możesz podać przykład w komentarzu lub może lepiej zadać nowe pytanie ze wszystkimi szczegółami. –

+0

Mam na myśli, jeśli mam ramkę danych z 3 kolumnami (A, B, C) i chcę sprawdzić, czy jest co najmniej wartość większa niż 0 w kolumnie A i B ... jednym z możliwych rozwiązań jest to zrobić: (df.A> 1) .any() i (df.B> 1) .any(). Czy jest to ładniejszy i elegancki sposób na zrobienie tego? –

Powiązane problemy