Heim >Backend-Entwicklung >Python-Tutorial >Wie können Werte in Pandas-DataFrames basierend auf bedingten Schwellenwerten effizient ersetzt werden?
Bedingte Werteersetzung in Pandas
Bei der Arbeit mit DataFrames in Pandas ist es oft notwendig, Werte basierend auf bestimmten Bedingungen selektiv zu ändern. Eine häufige Aufgabe besteht darin, Werte in einer bestimmten Spalte zu ersetzen, die einen bestimmten Schwellenwert überschreiten.
Ein früherer Versuch mit df[df.my_channel > 20000].my_channel = 0 Die Syntax erwies sich als erfolglos, wenn sie Teil des ursprünglichen DataFrame war. Dies ist auf die in Pandas 0.20.0 eingeführten Indexierungsänderungen zurückzuführen, die den .ix-Indexer veralteten.
Um dies zu beheben, können wir den .loc-Indexer verwenden, der eine alternative Methode für den Zugriff auf und die Änderung von Zeilen und Spalten bietet basierend auf Bedingungen.
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
Dieser Code erreicht das gewünschte Ergebnis, indem er zunächst eine boolesche Maske (Maske) erstellt, in der jeder Wert dem entspricht, ob er dem entspricht Der Wert in der Spalte „df.my_channel“ überschreitet 20000. Anschließend verwenden wir .loc, um die Zeilen auszuwählen, in denen die Maske „True“ enthält, und weisen der Spalte „column_name“ den Wert 0 zu.
Als Alternative der folgende einzeilige Code Snippet kann verwendet werden:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
In diesem Fall ist es wichtig, .loc anstelle von .iloc (integer-location) zu verwenden basierte Indizierung), um einen NotImplementedError zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie können Werte in Pandas-DataFrames basierend auf bedingten Schwellenwerten effizient ersetzt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!