Heim >Backend-Entwicklung >Python-Tutorial >Pandas Boolesche Indizierung: Warum „&' anstelle von „und' verwenden?

Pandas Boolesche Indizierung: Warum „&' anstelle von „und' verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-17 21:20:19113Durchsuche

Pandas Boolean Indexing: Why Use `&` Instead of `and`?

Logische Operatoren für die boolesche Indizierung in Pandas

Bei der Durchführung der booleschen Indizierung in Pandas ist es wichtig, den Unterschied zwischen den logischen Operatoren & (bitweises UND) und und ( logisches UND).

Warum & über und für Boolesche Werte verwenden? Indizierung?

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()

Verstehen des Fehlers

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.

Klammern: eine zwingende Voraussetzung

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

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn