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