pandas.core.window.rolling.Rolling.apply#
- Rolling.apply(func, raw=False, engine=None, engine_kwargs=None, args=None, kwargs=None)[source]#
- Calculate the rolling custom aggregation function. - Parameters:
- funcfunction
- Must produce a single value from an ndarray input if - raw=Trueor a single value from a Series if- raw=False. Can also accept a Numba JIT function with- engine='numba'specified.
- rawbool, default False
- False: passes each row or column as a Series to the function.
- True: the passed function will receive ndarray objects instead. If you are just applying a NumPy reduction function this will achieve much better performance.
 
- enginestr, default None
- 'cython': Runs rolling apply through C-extensions from cython.
- 'numba': Runs rolling apply through JIT compiled code from numba. Only available when- rawis set to- True.
- None: Defaults to- 'cython'or globally setting- compute.use_numba
 
- engine_kwargsdict, default None
- For - 'cython'engine, there are no accepted- engine_kwargs
- For - 'numba'engine, the engine can accept- nopython,- nogiland- paralleldictionary keys. The values must either be- Trueor- False. The default- engine_kwargsfor the- 'numba'engine is- {'nopython': True, 'nogil': False, 'parallel': False}and will be applied to both the- funcand the- applyrolling aggregation.
 
- argstuple, default None
- Positional arguments to be passed into func. 
- kwargsdict, default None
- Keyword arguments to be passed into func. 
 
- Returns:
- Series or DataFrame
- Return type is the same as the original object with - np.float64dtype.
 
 - See also - pandas.Series.rolling
- Calling rolling with Series data. 
- pandas.DataFrame.rolling
- Calling rolling with DataFrames. 
- pandas.Series.apply
- Aggregating apply for Series. 
- pandas.DataFrame.apply
- Aggregating apply for DataFrame. 
 - Examples - >>> ser = pd.Series([1, 6, 5, 4]) >>> ser.rolling(2).apply(lambda s: s.sum() - s.min()) 0 NaN 1 6.0 2 6.0 3 5.0 dtype: float64