# pandas.DataFrame.mask

`DataFrame.``mask`(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False, raise_on_error=None)

  Return an object of same shape as self and whose corresponding entries are from self where cond is False and otherwise are from other.

  Parameters:

  cond : boolean NDFrame, array-like, or callable

  > Where cond is False, keep the original value. Where True, replace with corresponding value from other. If cond is callable, it is computed on the NDFrame and should return boolean NDFrame or array. The callable must not change input NDFrame (though pandas doesn’t check it).

  > New in version 0.18.1: A callable can be used as cond.

  other : scalar, NDFrame, or callable

  > Entries where cond is True are replaced with corresponding value from other. If other is callable, it is computed on the NDFrame and should return scalar or NDFrame. The callable must not change input NDFrame (though pandas doesn’t check it).

  > New in version 0.18.1: A callable can be used as other.

  inplace : boolean, default False

  > Whether to perform the operation in place on the data

  axis : alignment axis if needed, default None

  level : alignment level if needed, default None

  errors : str, {‘raise’, ‘ignore’}, default ‘raise’

  > - `raise` : allow exceptions to be raised
  > - `ignore` : suppress exceptions. On error return original object

  > Note that currently this parameter won’t affect the results and will always coerce to a suitable dtype.

  try_cast : boolean, default False

  > try to cast the result back to the input type (if possible),

  raise_on_error : boolean, default True

  > Whether to raise on invalid data types (e.g. trying to where on strings)

  > Deprecated since version 0.21.0.

  Returns: | wh : same type as caller

  See also

  `DataFrame.where()`

  Notes

  The mask method is an application of the if-then idiom. For each element in the calling DataFrame, if `cond` is `False` the element is used; otherwise the corresponding element from the DataFrame `other` is used.

  The signature for `DataFrame.where()` differs from `numpy.where()`. Roughly `df1.where(m, df2)` is equivalent to `np.where(m, df1, df2)`.

  For further details and examples see the `mask` documentation in indexing.

  Examples

      >>> s = pd.Series(range(5))
      >>> s.where(s > 0)
      0    NaN
      1    1.0
      2    2.0
      3    3.0
      4    4.0

      >>> s.mask(s > 0)
      0    0.0
      1    NaN
      2    NaN
      3    NaN
      4    NaN

      >>> s.where(s > 1, 10)
      0    10.0
      1    10.0
      2    2.0
      3    3.0
      4    4.0

      >>> df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])
      >>> 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

Scroll To Top