Pandas DataFrame.mask(~) 將 DataFrame 中通過特定條件的所有值替換為所需值。
參數
1.cond | array-like 共 booleans
布爾掩碼,它是類似數組的結構(例如 Series 和 DataFrame),包含 True 或 False 作為其條目。
2. other | number 或 string 或 Series 或 DataFrame
用於替換 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
是否引發或抑製錯誤:
|
值 |
說明 |
|---|---|
|
|
允許出現錯誤。 |
|
|
發生錯誤時,返回源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 的值(在本例中為 3 和 4)已被 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 中的相應條目替換。
相關用法
- Python Pandas DataFrame max方法用法及代碼示例
- Python Pandas DataFrame mad方法用法及代碼示例
- Python Pandas DataFrame mean方法用法及代碼示例
- Python Pandas DataFrame mod方法用法及代碼示例
- Python Pandas DataFrame memory_usage方法用法及代碼示例
- Python Pandas DataFrame mode方法用法及代碼示例
- Python Pandas DataFrame merge方法用法及代碼示例
- Python Pandas DataFrame melt方法用法及代碼示例
- Python Pandas DataFrame median方法用法及代碼示例
- Python Pandas DataFrame min方法用法及代碼示例
- Python Pandas DataFrame mul方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python Pandas DataFrame agg方法用法及代碼示例
- Python Pandas DataFrame copy方法用法及代碼示例
- Python Pandas DataFrame pow方法用法及代碼示例
- Python Pandas DataFrame insert方法用法及代碼示例
- Python Pandas DataFrame lt方法用法及代碼示例
- Python Pandas DataFrame all方法用法及代碼示例
- Python Pandas DataFrame unstack方法用法及代碼示例
- Python PySpark DataFrame filter方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | mask method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
