首頁 >後端開發 >Python教學 >如何依條件高效替換 Pandas DataFrame 值?

如何依條件高效替換 Pandas DataFrame 值?

Barbara Streisand
Barbara Streisand原創
2024-12-22 09:03:24632瀏覽

How to Efficiently Replace Pandas DataFrame Values Based on a Condition?

Pandas DataFrame 中的條件替換

在 Pandas DataFrame 中,根據條件替換值是一項常見任務。考慮這樣一種情況,如果特定列中的值超過閾值,則需要將它們設為零。

原始方法:

實現此目的的一種常見方法是透過使用df[].ix 索引器,該索引器在Pandas 版本0.20.0 和0.20.0中已棄用

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

替代解決方案:

隨著loc 和iloc 索引器的引入,執行條件替換的建議方法是:

使用本地索引器:

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

loc 索引器允許基於布林遮罩進行行和列選擇。在這種情況下,遮罩選擇 df['my_channel'] > 的行。 20000,並且這些行在「my_channel」欄位中設定為零。

使用 iloc 索引器:

mask = df['my_channel'] > 20000
df.iloc[mask.index, df.columns.get_loc('my_channel')] = 0

iloc 索引器允許基於下列內容進行選取整數索引。在這種情況下,遮罩索引用於選擇行,“my_channel”的列索引用於將值設為零。

注意: 在這個特定情況下,建議使用 loc 索引器而不是 iloc 索引器,因為 iloc 不支援整數列上的布林索引。

以上是如何依條件高效替換 Pandas DataFrame 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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