diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index 967d2d4e8798b..f668d5f811a34 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -12,6 +12,7 @@ import numpy as np import pandas._libs.window as libwindow +import pandas.compat as compat from pandas.compat._optional import import_optional_dependency from pandas.compat.numpy import function as nv from pandas.util._decorators import Appender, Substitution, cache_readonly @@ -1159,7 +1160,7 @@ def impl(window, *_args): return impl - @numba.njit + @numba.njit(nogil=True, parallel=not compat.is_platform_32bit()) def roll_apply( values: np.ndarray, begin: np.ndarray, @@ -1167,7 +1168,9 @@ def roll_apply( minimum_periods: int, ): result = np.empty(len(begin)) - for i, (start, stop) in enumerate(zip(begin, end)): + for i in numba.prange(len(result)): + start = begin[i] + stop = end[i] window = values[start:stop] count_nan = np.sum(np.isnan(window)) if len(window) - count_nan >= minimum_periods: