Auswahl über mehrere Spalten mit Python Pandas?
Ich habe einen dataframe df
im pandas, wurde mit pandas.read_table
aus einer csv-Datei. Der dataframe hat mehrere Spalten und es wird indiziert, die von einer der Spalten, was einzigartig ist, das heißt, jede Zeile hat einen eindeutigen Wert für die Spalte für die Indexierung verwendet.)
Wie kann ich wählen Sie die Zeilen meiner dataframe basiert auf einem "komplexen" - filter angewendet, um mehrere Spalten? Ich kann ganz einfach wählen Sie aus der Scheibe des dataframe, wo Spalte colA
größer ist als 10 zum Beispiel:
df_greater_than10 = df[df["colA"] > 10]
Aber was ist, wenn ich wollte einen filter wie: wählen Sie die Scheibe df
wo alle der Spalten, die größer als 10?
Oder denen der Wert für colA
größer ist als 10, sondern der Wert für colB
ist weniger als 5?
Wie werden diese umgesetzt pandas?
Danke.
InformationsquelleAutor der Frage user248237dfsf | 2012-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich möchte Sie ermutigen, diese Fragen stellen sich auf der Mailingliste, aber in jedem Fall, es ist immer noch ein sehr niedriges Niveau Affäre arbeiten mit den zugrunde liegenden NumPy-arrays. Zum Beispiel, wählen Sie die Zeilen, wo der Wert in jeder Spalte übersteigt, sagen wir, 1.5 in diesem Beispiel:
Mehrere Bedingungen kombiniert werden mit
&
oder|
(und die Klammern!):Wäre ich sehr interessiert, eine Art von query-API um diese Art von Dinge einfacher
InformationsquelleAutor der Antwort Wes McKinney
Gibt es zumindest ein paar Ansätze zur Verkürzung der syntax für diese Pandas, bis Sie eine vollständige query-API die Straße runter (vielleicht werde ich versuchen, zu verbinden, die github-Projekt und dies ist die Zeit erlaubt, und wenn niemand anderes bereits begonnen hat).
Einer Methode zur Verkürzung der syntax ein wenig ist unten angegeben:
Vollständig zu lösen, müsste man etwas bauen, wie die SQL-select-und where-Klauseln in Pandas. Dies ist nicht trivial, sondern ein stechen, dass ich denke, könnte für diese Arbeit ist die Verwendung der Python -
operator
built-in module. Dies ermöglicht Ihnen, zu behandeln Dinge wie größer-als-als-Funktionen, anstelle von Symbolen. So könnten Sie Folgendes tun:Dann ein test-Beispiel wie dir wäre Folgendes zu tun:
Kürzen kann man die syntax noch weiter, indem Sie entweder in mehr Argumente
pandas_select
zu behandeln, die verschiedenen Allgemeinen logischen Operatoren automatisch, oder importieren Sie Sie in den namespace mit kürzeren Namen.Beachten Sie, dass die
pandas_select
obige Funktion arbeitet nur mit logischen und-Ketten von Zwängen. Sie müssten, um es zu ändern, um verschiedene logische Verhalten. Oder verwenden Sienot
und der DeMorgan ' s Gesetze.InformationsquelleAutor der Antwort ely
Einer Abfrage-Funktion wurde Hinzugefügt, um Pandas, da wurde diese Frage gestellt und beantwortet werden. Ein Beispiel ist unten gegeben.
Angesichts dieser sample-Daten-frame:
Die Abfrage-syntax wie folgt können Sie über mehrere Filter, wie eine "WHERE" - Klausel in einer select-Anweisung.
Sehen die Pandas Dokumentation für weitere details.
InformationsquelleAutor der Antwort M. K. Hunter