Вычислить скользящее среднее за последние n дней в Даске - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь вычислить скользящее среднее за последние 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?

1 Ответ

0 голосов
/ 08 мая 2020

В конечном счете, как я могу вычислить среднее значение столбца «длительность» за последние n дней на фрейме данных Dask?

Скользящий API должен предоставить вам эту функциональность

https://docs.dask.org/en/latest/dataframe-api.html#rolling

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...