pandas.core.window.Rolling.apply¶
The rolling function’s apply function.
- param func
 - function
 Must produce a single value from an ndarray input if
raw=Trueor a single value from a Series ifraw=False.
- param raw
 - bool, default None
 Falsepasses each row or column as a Series to thefunction.
TrueorNonethe passed function will receive ndarrayobjects instead. If you are just applying a NumPy reduction function this will achieve much better performance.
The raw parameter is required and will show a FutureWarning if not passed. In the future raw will default to False.
New in version 0.23.0.
Arguments and keyword arguments to be passed into func.
- return
 Series or DataFrame Return type is determined by the caller.
Limitations¶
- This function may reveal slower performance than Pandas* on user system. Users should exercise a tradeoff
 between staying in JIT-region with that function or going back to interpreter mode.
Supported
rawonly can be None or True. Parametersargs,kwargsunsupported.DataFrame/Series elements cannot be max/min float/integer. Otherwise SDC and Pandas results are different.
Examples¶
import numpy as np
import pandas as pd
from numba import njit
@njit
def series_rolling_apply():
    series = pd.Series([4, 3, 5, 2, 6])  # Series of 4, 3, 5, 2, 6
    def get_median(x):
        return np.median(x)
    out_series = series.rolling(3).apply(get_median)
    return out_series  # Expect series of NaN, NaN, 4.0, 3.0, 5.0
print(series_rolling_apply())
$ python ./series/rolling/series_rolling_apply.py
0    NaN
1    NaN
2    4.0
3    3.0
4    5.0
dtype: float64
import numpy as np
import pandas as pd
from numba import njit
@njit
def df_rolling_apply():
    df = pd.DataFrame({'A': [4, 3, 5, 2, 6], 'B': [-4, -3, -5, -2, -6]})
    def get_median(x):
        return np.median(x)
    out_df = df.rolling(3).apply(get_median)
    # Expect DataFrame of
    # {'A': [NaN, NaN, 4.0, 3.0, 5.0], 'B': [NaN, NaN, -4.0, -3.0, -5.0]}
    return out_df
print(df_rolling_apply())
$ python ./dataframe/rolling/dataframe_rolling_apply.py
     A    B
0  NaN  NaN
1  NaN  NaN
2  4.0 -4.0
3  3.0 -3.0
4  5.0 -5.0
See also
- Series.rolling
 Calling object with a Series.
- DataFrame.rolling
 Calling object with a DataFrame.
- Series.apply
 Similar method for Series.
- DataFrame.apply
 Similar method for DataFrame.