首頁 >後端開發 >Python教學 >如何有效地將超過閾值的 Pandas DataFrame 值替換為零?

如何有效地將超過閾值的 Pandas DataFrame 值替換為零?

Barbara Streisand
Barbara Streisand原創
2024-12-17 00:21:25707瀏覽

How to Efficiently Replace Pandas DataFrame Values Exceeding a Threshold with Zero?

Pandas 條件替換

操作 DataFrame 時,您可能會遇到需要替換滿足特定條件的值的情況。本問題旨在解決如何在特定列中用零替換超過閾值的值。

原始方法和限制

初始方法嘗試使用語法 df [df.my_channel> 20000].my_channel = 0。但是,正如使用者所觀察到的,這種方法在原始 DataFrame 中工作時會遇到問題。

使用.loc 索引器的解決方案

至要解決此問題,可以使用.loc 索引器,在較新版本的Pandas 中推薦使用該索引器。此語法允許精確的行和列選擇和變更。要實現所需的替換,您可以使用以下程式碼:

mask = df.my_channel > 20000
column_name = 'my_channel'
df.loc[mask, column_name] = 0

或者,您可以將程式碼壓縮為一行:

df.loc[df.my_channel > 20000, 'my_channel'] = 0

說明

mask 變數選擇df.my_channel 超過20000 的行。隨後,df.loc[mask, column_name] = 0 將那些遮罩為 True 的行的 my_channel 欄位設為零。

注意

必須使用在這種情況下,.loc 索引器,因為在整數類型列上使用帶有布林索引的.iloc 將導致未實現錯誤。

以上是如何有效地將超過閾值的 Pandas DataFrame 值替換為零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn