Ich versuche, einen DataFrame so zu ändern, dass df
er nur Zeilen enthält, für die die Werte in der Spalte closing_price
zwischen 99 und 101 liegen, und versuche dies mit dem folgenden Code.
Ich erhalte jedoch den Fehler
ValueError: Der Wahrheitswert einer Serie ist nicht eindeutig. Verwenden Sie a.empty, a.bool (), a.item (), a.any () oder a.all ()
und ich frage mich, ob es einen Weg gibt, dies ohne Schleifen zu tun.
df = df[(99 <= df['closing_price'] <= 101)]
df.query
undpd.eval
scheinen gut für diesen Anwendungsfall zu passen. Informationen zurpd.eval()
Funktionsfamilie, ihren Funktionen und Anwendungsfällen finden Sie unter Auswertung dynamischer Ausdrücke in Pandas mit pd.eval () .Antworten:
Sie sollten
()
Ihren booleschen Vektor gruppieren, um Mehrdeutigkeiten zu beseitigen.quelle
Betrachten Sie auch Serien zwischen :
quelle
inclusive=True
wird standardmäßig in verwendetbetween
, so dass Sie wie folgt abfragen könnendf = df[df['closing_price'].between(99, 101)]
between
.df = df[~df['closing_price'].between(99, 101)]
Es gibt eine schönere Alternative - verwenden Sie die query () -Methode:
UPDATE: Beantwortung des Kommentars:
quelle
mean
undsd
? Sind das Spaltennamen?Sie können auch
.between()
Methode verwendenquelle
oder
quelle
Wenn Sie mit mehreren Werten und mehreren Eingaben arbeiten, können Sie auch eine solche Apply-Funktion einrichten. In diesem Fall wird ein Datenrahmen nach GPS-Standorten gefiltert, die in bestimmte Bereiche fallen.
quelle
An Stelle von
Sie sollten dies verwenden
Wir müssen die bitweisen Logikoperatoren |, &, ~, ^ von NumPy verwenden, um Abfragen zusammenzusetzen. Außerdem sind die Klammern wichtig für die Priorität des Operators.
Weitere Informationen finden Sie unter folgendem Link: Vergleiche, Masken und Boolesche Logik
quelle