Expanding.apply(func, raw=False, engine=None, engine_kwargs=None, args=None, kwargs=None)[source]

Apply an arbitrary function to each expanding window.


Must produce a single value from an ndarray input if raw=True or a single value from a Series if raw=False. Can also accept a Numba JIT function with engine='numba' specified.

Changed in version 1.0.0.

rawbool, default None
  • 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 raw is set to True.

  • None : Defaults to 'cython' or globally setting compute.use_numba

    New in version 1.0.0.

engine_kwargsdict, default None
  • For 'cython' engine, there are no accepted engine_kwargs

  • For 'numba' engine, the engine can accept nopython, nogil and parallel dictionary keys. The values must either be True or False. The default engine_kwargs for the 'numba' engine is {'nopython': True, 'nogil': False, 'parallel': False} and will be applied to both the func and the apply rolling aggregation.

    New in version 1.0.0.

argstuple, default None

Positional arguments to be passed into func.

kwargsdict, default None

Keyword arguments to be passed into func.

Series or DataFrame

Return type is determined by the caller.

See also


Calling object with Series data.


Calling object with DataFrame data.


Similar method for Series.


Similar method for DataFrame.


See Rolling apply for extended documentation and performance considerations for the Numba engine.