DataFrame.mask(self, cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False) [source]
替换条件为True的值。
参数: | cond: 如果 则用 则它是在 并且应返回布尔 可调用对象不得更改输入 (尽管pandas不会对其进行检查)。 other:
如果 则在 并应返回 可调用对象不得更改输入 (尽管pandas不会对其进行检查)。 inplace: 布尔值,默认为 是否对数据执行适当的操作。 axis: 对齐轴(如果需要)。 level: 对齐级别(如果需要)。 errors: 请注意,当前此参数不会影响结果, 并且始终会强制转换为合适的 1) 2) try_cast: 尝试将结果转换回输入类型(如果可能)。 |
返回: | 与调用者类型相同 |
Notes
mask
方法是if-then
惯用语的一种应用。对于在主叫DataFrame的每个元素中,如果cond
是False
的元素被使用; 否则,将使用DataFrame中的相应元素 other。
的签名DataFrame.where()不同于 numpy.where()。df1.where(m, df2)
大致相当于np.where(m, df1, df2)
有关更多详细信息和示例,请参见indexing中的mask文档 。
例子
s = pd.Series(range(5))
s.where(s > 0)
0 NaN
1 1.0
2 2.0
3 3.0
4 4.0
dtype: float64
s.mask(s > 0)
0 0.0
1 NaN
2 NaN
3 NaN
4 NaN
dtype: float64
s.where(s > 1, 10)
0 10
1 10
2 2
3 3
4 4
dtype: int64
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])
df
A B
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
m = df % 3 == 0
df.where(m, -df)
A B
0 0 -1
1 -2 3
2 -4 -5
3 6 -7
4 -8 9
df.where(m, -df) == np.where(m, df, -df)
A B
0 True True
1 True True
2 True True
3 True True
4 True True
df.where(m, -df) == df.mask(~m, -df)
A B
0 True True
1 True True
2 True True
3 True True
4 True True