当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。