使用條件邏輯取代 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
此程式碼執行以下操作:
或者,您可以使用單行:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
請注意,在這種情況下,建議使用 .loc 而不是 .iloc 作為後者可能會導致 NotImplementedError。
以上是為什麼根據條件替換 DataFrame 值不能直接運作,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!