當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame mask方法用法及代碼示例


Pandas DataFrame.mask(~) 將 DataFrame 中通過特定條件的所有值替換為所需值。

參數

1.cond | array-likebooleans

布爾掩碼,它是類似數組的結構(例如 Series 和 DataFrame),包含 TrueFalse 作為其條目。

2. other | numberstringSeriesDataFrame

用於替換 cond 中具有 True 的條目的值。

3. inplace | boolean | optional

  • 如果是True,那麽該方法將直接修改源DataFrame,而不是創建新的DataFrame。

  • 如果是False,則將創建並返回一個新的DataFrame。

默認情況下,inplace=False

4. axis | int | optional

執行該方法所沿的軸。默認情況下,axis=None

5. level | int | optional

執行該方法的級別。僅當您的源 DataFrame 是多索引時,這才有意義。

6. errors | string | optional

是否引發或抑製錯誤:

說明

"raise"

允許出現錯誤。

"ignore"

發生錯誤時,返回源DataFrame。

默認情況下,errors="raise"

7. try_cast | boolean | optional

是否將結果 DataFrame 轉換為源 DataFrame 的類型。默認情況下,try_cast=False

返回值

DataFrame,其值根據您的參數進行替換。請注意,形狀與源 DataFrame 的形狀相同。

例子

應用自定義蒙版

考慮以下 DataFrame :

df = pd.DataFrame({"A":[1,2], "B":[3,4]})
df



   A  B
0  1  3
1  2  4

我們的目標是使用 mask(~) 方法將所有大於 2 的值替換為值 5

為了使用 mask(~) ,我們首先需要像這樣準備掩碼:

df_mask = df > 2



   A      B
0  False  True
1  False  True

請注意,所有符合條件的值(值 > 2)如何標記為 True ,以及那些不標記為 False 的值。

最後,我們像這樣應用掩碼:

df.mask(df_mask, 5)



   A  B
0  1  5
1  2  5

我們看到所有大於 2 的值(在本例中為 34)已被 5 替換。

應用 Pandas 內置遮罩

考慮以下 DataFrame :

df = pd.DataFrame({"A": [pd.np.NaN,2], "B":[3,pd.np.NaN]})
df



   A    B
0  NaN  3.0
1  2.0  NaN

我們的 df 包含兩個缺失值。我們的目標是用值 5 替換這些缺失值。

我們可以利用 Panda DataFrame.isna(~) 方法,而不是像以前那樣創建自己的布爾掩碼:

df.isna()



   A      B
0  True   False
1  False  True

我們可以直接執行屏蔽操作,如下所示:

df.mask(df.isna(), 5)



   A    B
0  5.0  3.0
1  2.0  5.0

請注意,這隻是一個示例,用於說明 mask(~) 的使用 - 要填充缺失值,請選擇使用 fillna(~)

使用DataFrame作為替代品

在前麵的兩個示例中,我們隻是用一個數字替換了滿足特定條件的所有值。 mask(~) 方法還可以采用 DataFrame,當您有多個值作為替換者時使用該 DataFrame。

作為示例,請考慮以下 DataFrame:

df = pd.DataFrame({"A":[1,2],"B":[3,4]})
df



   A  B
0  1  3
1  2  4

再一次,假設我們要修改所有大於 2 的值。

我們像這樣準備掩碼:

df_mask = df > 2



   A      B
0  False  True
1  False  True

接下來,我們創建 DataFrame 用作替換器:

df_replacer = pd.DataFrame({"A":[5,6], "B":[7,8]})
df_replacer



   A  B
0  5  7
1  6  8

最後,使用mask(~)方法來應用我們的掩碼:

df.mask(df_mask, df_replacer)



   A  B
0  1  7
1  2  8

請注意 df 中在 df_mask 中標記為 True 的值如何被 df_replacer 中的相應條目替換。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | mask method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。