DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False) [source]
替换where
条件为False
的值。
参数: | cond : 或 当 用 它将根据 并且应该返回 可调用对象不能更改输入 other :
如果其他变量是可调用的, 它将根据 并且应该返回 可调用对象不能更改输入 inplace : 是否对数据执行适当的操作。 axis: 如有需要,调整axis。 level : 如果需要对齐level。 errors : 请注意,目前这个参数不会影响结果, 并且总是将其强制为合适的 1) ‘raise’ : 允许引发异常。 2) ‘ignore’ : 抑制异常。错误时返回原始对象。 try_cast : 尝试将结果转换回输入类型(如果可能)。 |
返回值: | 与调用者类型相同 |
Notes
where
方法是if-then
惯用语的应用。对于在主叫数据帧的每个元素中,如果cond
是True
的元件被使用; 否则,将使用DataFrame
中的相应元素 other
。DataFrame.where()
的签名不同于numpy.where()
。df1.where(m, df2)
大致相当于np.where(m, df1, df2)
。
有关更多详细信息和示例,请参见indexing中的where文档 。
例子
>>> 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