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 NaN1 1.02 2.03 3.04 4.0dtype: float64
>>> s.mask(s > 0)0 0.01 NaN2 NaN3 NaN4 NaNdtype: float64
>>> s.where(s > 1, 10)0 101 102 23 34 4dtype: int64
>>> df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])>>> df A B0 0 11 2 32 4 53 6 74 8 9>>> m = df % 3 == 0>>> df.where(m, -df) A B0 0 -11 -2 32 -4 -53 6 -74 -8 9>>> df.where(m, -df) == np.where(m, df, -df) A B0 True True1 True True2 True True3 True True4 True True>>> df.where(m, -df) == df.mask(~m, -df) A B0 True True1 True True2 True True3 True True4 True True