cudf.core.window.rolling.Rolling.apply#

Rolling.apply(func, *args, **kwargs)[source]#

Calculate the rolling custom aggregation function.

Parameters:
funcfunction

A user defined function that takes an 1D array as input

argstuple

unsupported.

kwargs

unsupported

See also

cudf.Series.apply

Apply an elementwise function to transform the values in the Column.

Notes

The supported Python features are listed in

https://numba.readthedocs.io/en/stable/cuda/cudapysupported.html

with these exceptions:

  • Math functions in cmath are not supported since libcudf does not have complex number support and output of cmath functions are most likely complex numbers.

  • These five functions in math are not supported since numba generates multiple PTX functions from them:

    • math.sin()

    • math.cos()

    • math.tan()

    • math.gamma()

    • math.lgamma()

  • Series with string dtypes are not supported.

  • Global variables need to be re-defined explicitly inside the udf, as numba considers them to be compile-time constants and there is no known way to obtain value of the global variable.

Examples

>>> import cudf
>>> def count_if_gt_3(window):
...     count = 0
...     for i in window:
...             if i > 3:
...                     count += 1
...     return count
...
>>> s = cudf.Series([0, 1.1, 5.8, 3.1, 6.2, 2.0, 1.5])
>>> s.rolling(3, min_periods=1).apply(count_if_gt_3)
0    0
1    0
2    1
3    2
4    3
5    2
6    1
dtype: int64