Logische Operatoren für die boolesche Indizierung in Pandas
Bei der Arbeit mit der booleschen Indizierung in Pandas ist es wichtig, den Unterschied zwischen den logischen Operatoren zu verstehen. &“ und „und“.
Frage:Warum passiert Folgendes Anweisung funktioniert ohne Fehler:
a[(a['some_column']==some_number) & (a['some_other_column']==some_other_number)]
aber die folgende Anweisung wird mit einem Fehler beendet:
a[(a['some_column']==some_number) and (a['some_other_column']==some_other_number)]
Antwort:
Das „und“ Der Operator in Python konvertiert seine Operanden implizit in boolesche Werte. Beim Umgang mit NumPy-Arrays (und Pandas-Serien, die auf NumPy-Arrays basieren) kann diese Konvertierung jedoch zu Mehrdeutigkeiten führen.
Bei der Bewertung des Wahrheitswerts eines Arrays mit mehreren Elementen ist unklar, ob dies der Fall sein sollte gilt als wahr, wenn:
Um diese Mehrdeutigkeit zu vermeiden, erfordern NumPy und Pandas eine explizite boolesche Auswertung mit „any()“, „all()“ oder „empty()“-Methoden.
Bei der booleschen Indizierung wollen wir keine boolesche Auswertung, sondern elementweise logische Operationen. Hier kommt der „&“-Operator ins Spiel.
Der „&“-Operator führt eine elementweise logische UND-Verknüpfung durch. Es wird ein boolesches Array zurückgegeben, in dem jedes Element das Ergebnis der logischen UND-Verknüpfung der entsprechenden Elemente in den Eingabearrays ist.
Beispiel:
import pandas as pd a = pd.DataFrame({'x':[1,1],'y':[10,20]}) print(a[(a['x']==1) & (a['y']==10)])
Ausgabe:
x y 0 1 10
In diesem Beispiel wird der „&“-Operator verwendet, um Zeilen zu finden, in denen sowohl die „x“-Spalte als auch die „y“-Spalte aufeinandertreffen angegebenen Kriterien.
Das obige ist der detaillierte Inhalt vonPandas Boolesche Indizierung: Warum „&' anstelle von „und' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!