Python pandas.DataFrame.where函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.where方法的使用。

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False) [source]

替换where条件为False的值。

参数:

cond bool Series/DataFrame, array-like

callable

condTrue时,保持原始值。当为False时,

other的相应值替换。如果cond是可调用的,

它将根据Series/DataFrame计算,

并且应该返回boolean Series/DataFramearray

可调用对象不能更改输入Series/DataFrame(尽管panda不检查它)。

other scalar, Series/DataFrame, 或 callable

cond为假的条目被替换为other的相应值。

如果其他变量是可调用的,

它将根据Series/DataFrame计算,

并且应该返回scalarSeries/DataFrame

可调用对象不能更改输入Series/DataFrame(尽管panda不检查它)。

inplace bool, 默认为False

是否对数据执行适当的操作。

axisint, 默认为 None

如有需要,调整axis。

levelint, 默认为 None

如果需要对齐level。

errorsstr, {‘raise’, ‘ignore’}, 默认为‘raise’

请注意,目前这个参数不会影响结果,

并且总是将其强制为合适的dtype

1) ‘raise’ : 允许引发异常。

2) ‘ignore’ : 抑制异常。错误时返回原始对象。

try_castbool, 默认为False

尝试将结果转换回输入类型(如果可能)。

返回值:

与调用者类型相同

Notes

where方法是if-then惯用语的应用。对于在主叫数据帧的每个元素中,如果condTrue的元件被使用; 否则,将使用DataFrame中的相应元素 otherDataFrame.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
              

推荐阅读
cjavapy编程之路首页