Heim >Backend-Entwicklung >Python-Tutorial >Pandas Boolesche Indizierung: Warum „&' anstelle von „und' verwenden?
Bei der Durchführung der booleschen Indizierung in Pandas ist es wichtig, den Unterschied zwischen den logischen Operatoren & (bitweises UND) und und ( logisches UND).
Betrachten Sie das folgende Beispiel:
a = pd.DataFrame({'x': [1, 1], 'y': [10, 20]}) a[(a['x'] == 1) & (a['y'] == 10)]
Dieser Code gibt das erwartete Ergebnis zurück:
x y 0 1 10
Wenn Sie jedoch and anstelle von & verwenden, erhalten Sie Es wird ein Fehler auftreten:
a[(a['x'] == 1) and (a['y'] == 10)]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Der Fehler tritt auf weil und versucht, die Wahrhaftigkeit jeder Serie einzeln zu bewerten (a['x'] und a['y']). Allerdings haben diese Reihen keinen eindeutigen booleschen Wert, was zum mehrdeutigen Wahrheitswertfehler führt.
Im Gegensatz dazu führt der bitweise &-Operator elementweise logische Operationen aus. Es wird ein boolesches Array zurückgegeben, in dem jedes Element das Ergebnis der Operation zwischen den entsprechenden Elementen in a['x'] und a['y'] darstellt. Dadurch können Sie eine boolesche Maske für die Indizierung erstellen.
Beachten Sie, dass bei der Verwendung von & zwingend Klammern verwendet werden müssen. Ohne sie würde die Operation aufgrund der höheren Operatorpriorität von & gegenüber == falsch ausgewertet.
a['x'] == 1 & a['y'] == 10 # Incorrect: Triggers the error (a['x'] == 1) & (a['y'] == 10) # Correct: Boolean indexing works as expected
Verwenden Sie beim Durchführen einer booleschen Indizierung in Pandas immer den &-Operator für elementweise logische Operationen. Dies stellt eine ordnungsgemäße Bewertung sicher und vermeidet den mehrdeutigen Wahrheitswertfehler.
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!