Logische Operatoren für die boolesche Indizierung in Pandas
Beim Arbeiten mit der booleschen Indizierung in Pandas kann es zu einem Fehler kommen, wenn Sie versuchen, das und zu verwenden Operator direkt mit Reihenvergleichen, wie im folgenden Beispiel zu sehen:
a[(a['some_column']==some_number) and (a['some_other_column']==some_other_number)]
Dies führt zu a ValueError, da Python einem Array mit mehreren Elementen keinen booleschen Wert zuweisen kann. Stattdessen müssen wir den &-Operator für elementweise logische Und-Operationen verwenden:
a[(a['some_column']==some_number) & (a['some_other_column']==some_other_number)]
Dieser Unterschied entsteht, weil der Und-Operator eine boolesche Auswertung durchführt, während der &-Operator elementweise logische Operationen ausführt. Bei der Auswertung von Reihenvergleichen mit und kann Python nicht bestimmen, wie mit der Mehrdeutigkeit der Zuweisung eines booleschen Werts zu einer Sammlung von Elementen umgegangen werden soll.
Um korrekte elementweise logische Operationen sicherzustellen, sind Klammern in Ausdrücken, die das beinhalten, von entscheidender Bedeutung & Betreiber. Das Vernachlässigen von Klammern kann zu einer unbeabsichtigten Auswertungsreihenfolge führen, wie zum Beispiel:
a['x']==1 & a['y']==10
Was wie folgt interpretiert werden würde:
(a['x'] == 1) & (a['y'] == 10)
Stattdessen lautet der korrekte Ausdruck:
(a['x']==1) & (a['y']==10)
Wenn Sie den Unterschied zwischen boolescher Auswertung und elementweisen logischen Operationen verstehen, können Sie logische Operatoren effektiv für die boolesche Indizierung verwenden Pandas.
Das obige ist der detaillierte Inhalt vonWie verwende ich logische Operatoren für die boolesche Indizierung in Pandas richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!