Bedingte Werteersetzung in Pandas DataFrames
Bei der Arbeit mit Pandas DataFrames kann es vorkommen, dass Sie Werte basierend auf a bedingt ersetzen müssen angegebenen Zustand. Diese Frage veranschaulicht ein solches Szenario, in dem ein Benutzer versucht, Werte in einer bestimmten Spalte, die einen Schwellenwert überschreiten, durch Null zu ersetzen.
Zunächst versuchte der Benutzer, den folgenden Ansatz zu verwenden:
df[df.my_channel > 20000].my_channel = 0
Diese Methode brachte jedoch keine Ergebnisse. Dies liegt daran, dass Pandas den .ix-Indexer seit Version 0.20.0 veraltet hat und Benutzer stattdessen .loc- oder .iloc-Indexer verwenden sollten.
Die richtige Lösung besteht darin, .loc oder .iloc zu verwenden, um auf bestimmte Zeilen oder Spalten abzuzielen und führen Sie die bedingte Ersetzung durch. So können Sie .loc verwenden:
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
Alternativ können Sie dieselbe Aufgabe in einer Zeile mit .loc ausführen:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
Die Maskenvariable hilft dabei, die Zeilen zu identifizieren, die die Anforderungen erfüllen die Bedingung df.my_channel > 20000 und df.loc[mask, columns_name] = 0 weist den ausgewählten Zeilen in der angegebenen Spalte 0 zu.
Hinweis: In diesem speziellen Szenario wird empfohlen, stattdessen .loc zu verwenden von .iloc, um einen NotImplementedError zu vermeiden, da eine ganzzahlbasierte boolesche Indizierung mit .iloc nicht unterstützt wird.
Das obige ist der detaillierte Inhalt vonWie ersetze ich Werte in einer Pandas DataFrame-Spalte bedingt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!