Heim >Backend-Entwicklung >Python-Tutorial >Wie können Werte in Pandas-DataFrames basierend auf bedingten Schwellenwerten effizient ersetzt werden?

Wie können Werte in Pandas-DataFrames basierend auf bedingten Schwellenwerten effizient ersetzt werden?

DDD
DDDOriginal
2024-12-15 07:28:12739Durchsuche

How to Efficiently Replace Values in Pandas DataFrames Based on Conditional Thresholds?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn