2015-12-08 10 views
5

Der folgende Code wird True drucken, da die Serie mindestens ein Element enthält, das größer als 1 ist. Es scheint jedoch ein bisschen un-Pythonic. Gibt es eine pythonischere Methode, True zurückzugeben, wenn eine Serie eine Zahl enthält, die> ein bestimmter Wert ist?Überprüfen Sie, ob eine Pandas-Serie mindestens einen Eintrag größer als einen Wert hat

import pandas as pd 

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

Wahre

EDIT: Nicht nur die oben genannte Antwort un-Pythonic, wird es manchmal ein falsches Ergebnis aus irgendeinem Grund zurückbringen. Zum Beispiel:

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

Falsch

Antwort

7

Sie any Methode verwenden, um zu überprüfen, ob diese Bedingung True zumindest für einen Wert ist:

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

Wie erweitere Sie, dass der Betrieb zu einer Reihe von Spalten, so dass es zurückgibt, wenn unter allen Werten mindestens ein Wert größer als Null ist? –

+0

@FedericoGentile meinst du sowas wie 'any (axis = 1) .any()'? Zuerst wird es in allen Zeilen in Ihrer Teilmenge überprüft und die Pandas-Serie wird erzeugt. Zweitens überprüfen Sie die Reihe auf "True" -Werte. Wenn nicht, könnten Sie ein Beispiel im Kommentar angeben oder vielleicht eine neue Frage mit allen Details stellen. –

+0

Ich meine, wenn ich ein Datenframe mit 3 Spalten (A, B, C) habe und ich überprüfen möchte, ob es mindestens einen Wert größer als 0 in Spalte A und B gibt ... eine mögliche Lösung ist, dies zu tun: (df.A> 1) .any() und (df.B> 1) .any(). Gibt es einen schöneren und eleganteren Weg? –

Verwandte Themen