Elementweises logisches ODER in Pandas


Antworten:


129

Der entsprechende Operator ist |:

 df[(df < 3) | (df == 5)]

würde elementweise prüfen, ob der Wert kleiner als 3 oder gleich 5 ist.


Wenn Sie dazu eine Funktion benötigen, haben wir np.logical_or. Für zwei Bedingungen können Sie verwenden

df[np.logical_or(df<3, df==5)]

Oder verwenden Sie für mehrere Bedingungen die logical_or.reduce,

df[np.logical_or.reduce([df<3, df==5])]

Da die Bedingungen als einzelne Argumente angegeben werden, ist keine Gruppierung in Klammern erforderlich.

Weitere Informationen zu logischen Operationen mit Pandas finden Sie hier .


30
Die runden Klammern sind wichtig
Gerard

3
|und np.logical_orverhalten sich in Gegenwart von NaNs anders. Siehe stackoverflow.com/q/37131462/2596586
Frank

Nur ein Kommentar: orfunktioniert hier nicht. Funktioniert nur |.
alanwsx

10

Um das elementweise logische ODER von zwei Reihen zu nehmen aund beinfach zu tun

a | b
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.