Ausgabe
Dies ist mein Datenrahmen:
df = pd.DataFrame(
{'tid': [11, 12, 12, 14, 14],
'price': [846.94,412.65,1295.38,741.24,695.47],
'item': ['A', 'B', 'A', 'B', 'A']}
)
df
tid price item
0 11 846.94 A
1 12 412.65 B
2 12 1295.38 A
3 14 741.24 B
4 14 695.47 A
Ich möchte alle Zeilen df
außer wo A > 1_000
in der item
Spalte.
Erwartete Ergebnisse:
tid price item
0 11 846.94 A
1 12 412.65 B
3 14 741.24 B
4 14 695.47 A
Lösung
Sie können die boolesche Indizierung verwenden :
# is item A?
m1 = df['item'].eq('A')
# is the price > 1000?
m2 = df['price'].gt(1000)
# keep if both conditions are not met
out = df[~(m1&m2)]
Alternative Bedingungen unter Verwendung der Äquivalenz von De Morgan :
# is the item not A?
m1 = df['item'].ne('A')
# is the price ≤ 1000?
m2 = df['price'].le(1000)
# keep the rows if either condition is met
out = df[m1|m2]
Ausgang:
tid price item
0 11 846.94 A
1 12 412.65 B
3 14 741.24 B
4 14 695.47 A
Beantwortet von – mozway
Antwort geprüft von – Timothy Miller (FixError Admin)