Мне нужно применить функцию к скользящему окну на некотором разреженном DataFrame, индексированном по дате и времени (временной интервал между строками меняется). Размер окна определяется смещением:
def value_diff(x):
return (x[-1] - x[0]) / x[0] * 100
diff = df['value'].rolling(window='10min').apply(value_diff)
Мне нужно, чтобы первое значение результата основывалось на данных не менее 10 минут.
К сожалению, параметр min_periods * Функция 1006 * не принимает смещение, только числовое количество точек, и я не могу указать для нее фиксированное значение, потому что количество элементов в одном окне меняется.
После запуска этого кода я получаю объект Series который начинается с результатов применения функции value_diff()
с самого начала столбца DataFrame, а окно содержит только 1 элемент, затем 2 элемента, 3 элемента и т. д.
Я могу запустить diff = duff.truncate(before=diff.index[0] + timedelta(minutes=10), copy=False)
, но мне это кажется несколько неэффективным. Есть ли способ избежать применения функции прокрутки к неполному windows в начале, после усечения ненадежных данных, без полной перезаписи rolling()
?