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

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

Linda Hamilton
Freigeben: 2024-12-17 21:20:19
Original
123 Leute haben es durchsucht

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)]
Nach dem Login kopieren

Dieser Code gibt das erwartete Ergebnis zurück:

    x   y
0   1  10
Nach dem Login kopieren

Wenn Sie jedoch and anstelle von & verwenden, erhalten Sie Es wird ein Fehler auftreten:

a[(a['x'] == 1) and (a['y'] == 10)]
Nach dem Login kopieren
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage