Мне нужно вычислить произведение всех значений в скользящих окнах для серий панд, игнорировать nan.
Я использую pandas.Series.rolling.apply в качестве текущего подхода, но скорость довольно медленная по сравнению со встроенной-в функциях, я работаю на огромных фреймах данных, поэтому моей заботой является скорость.
в качестве демонстрации:
import pandas as pd
a = pd.Series(range(100))
%timeit -n100 a.rolling(5).apply(np.nanprod,raw=True)
5.58 ms ± 163 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit -n100 a.rolling(5).mean()
236 µs ± 19 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Так что apply()
намного медленнее по сравнению с-в mean
функция
1 есть ли способ ускорить процесс применения
2 или есть встроенная функция продукта для скользящего окна (игнорируйте nan, если это возможно)? Не могу найти его в документах