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中文網其他相關文章!