Я пытаюсь вычислить скользящее среднее за последние n дней (с n = 30) для большого набора данных. В Pandas я бы использовал следующую команду:
temp = chunk.groupby('id_code').apply(lambda x: x.set_index('entry_time_flat').resample('1D').first())
dd = temp.groupby(level=0)['duration'
].apply(lambda x: x.shift().rolling(min_periods = 1,window = n_days).mean()
).reset_index(name = "avg_delay_"+ str(n_days) + "_days")
chunk = pd.merge(chunk, dd, on=['entry_time_flat', 'id_code'], how='left'
).dropna(subset = ["avg_delay_"+ str(n_days) + "_days"])
В основном, функции группируются по «коду идентификатора» и, за последние n дней, по сравнению с «entry_time_flat» (объект datetime), вычисляет среднее значение функции «длительность».
Однако, чтобы сохранить эффективность кода, было бы здорово воспроизвести эту функцию на фрейме данных Dask, не превращая ее в Pandas DF.
Если я запускаю вышеупомянутый код на Dask DF, возникает следующая ошибка:
TypeError: __init__() got an unexpected keyword argument 'level'
В конечном итоге, как я могу вычислить среднее значение столбца «duration» за последний n-дней на фрейме данных Dask?