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 .

deinonychusaur
quelle
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
Jonathan Stray
quelle