Bedingter Pandas-Ersatz
Beim Bearbeiten eines DataFrame müssen möglicherweise Werte ersetzt werden, die bestimmte Kriterien erfüllen. Bei dieser Frage geht es darum, wie Werte, die einen Schwellenwert überschreiten, innerhalb einer bestimmten Spalte durch Null ersetzt werden können.
Ursprünglicher Ansatz und Einschränkungen
Der ursprüngliche Ansatz versuchte, die Syntax df zu verwenden [df.my_channel > 20000].my_channel = 0. Bei diesem Ansatz treten jedoch Probleme auf, wenn innerhalb des ursprünglichen DataFrame gearbeitet wird, wie vom Benutzer beobachtet.
Lösung mit .loc Indexer
An Um dieses Problem zu beheben, können Sie den .loc-Indexer verwenden, der in neueren Versionen von Pandas empfohlen wird. Diese Syntax ermöglicht eine präzise Auswahl und Änderung von Zeilen und Spalten. Um die gewünschte Ersetzung zu erreichen, können Sie den folgenden Code verwenden:
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
Alternativ können Sie den Code in einer einzigen Zeile zusammenfassen:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
Erläuterung
Die Maskenvariable wählt die Zeilen aus, in denen df.my_channel 20000 überschreitet. Anschließend df.loc[mask, columns_name] = 0 setzt die Spalte „my_channel“ für die Zeilen, in denen die Maske „True“ ist, auf Null.
Hinweis
Es ist unbedingt erforderlich, die . loc-Indexer in diesem Fall, da die Verwendung von .iloc mit boolescher Indizierung für eine Spalte vom Typ Ganzzahl zu einem führt NotImplementedError.
Das obige ist der detaillierte Inhalt vonWie kann man Pandas-DataFrame-Werte, die einen Schwellenwert überschreiten, effizient durch Null ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!