首頁 > 後端開發 > Python教學 > 為什麼根據條件替換 DataFrame 值不能直接運作,如何修復它?

為什麼根據條件替換 DataFrame 值不能直接運作,如何修復它?

Linda Hamilton
發布: 2024-12-21 00:25:10
原創
235 人瀏覽過

Why Doesn't Replacing DataFrame Values Based on a Condition Work Directly, and How Can I Fix It?

使用條件邏輯取代 DataFrame 值

在 Pandas 中,DataFrame 操作是一個至關重要的方面。常見的操作是根據特定條件替換值。考慮以下場景:

問題:

我想將 DataFrame 列中超過閾值的值替換為零。我嘗試使用以下方法實現此目的:

df[df.my_channel > 20000].my_channel = 0
登入後複製

但是,它似乎僅在將通道複製到新的 DataFrame 時才有效。為什麼它不能與原始 DataFrame 一起使用?

答案:

問題與所使用的索引器有關。在 Pandas 0.20.0 版本之前,通常使用 .ix 索引器。然而,它已被棄用。相反,請使用 .loc 或 .iloc 索引器。

要解決您的問題,您可以使用以下程式碼:

mask = df.my_channel > 20000
column_name = 'my_channel'
df.loc[mask, column_name] = 0
登入後複製

此程式碼執行以下操作:

  1. mask 選擇df.my_channel > 的行20000 為True。
  2. df.loc[mask, column_name] = 0 將 column_name 欄位中選定的行設為 0。

或者,您可以使用單行:

df.loc[df.my_channel > 20000, 'my_channel'] = 0
登入後複製

請注意,在這種情況下,建議使用 .loc 而不是 .iloc 作為後者可能會導致 NotImplementedError。

以上是為什麼根據條件替換 DataFrame 值不能直接運作,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板