计算Dask最近n天的滚动平均值

时间:2020-05-03 17:20:24

标签: python pandas dask dask-dataframe

我正在尝试在大型数据集上计算最近n天(n = 30)的滚动平均值。 在熊猫中,我将使用以下命令:

 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"])

基本上,该函数按“ id代码”分组,并在“ entry_time_flat”(日期时间对象)上的最后n天中,计算特征“ duration”的平均值。

但是,为了保持代码高效,最好在Dask数据帧上重现此功能,而无需将其转换为Pandas DF。

如果我在Dask DF上运行上述代码,则会引发以下错误:

TypeError: __init__() got an unexpected keyword argument 'level'

最终,我如何在Dask数据帧的最后n天中计算“持续时间”列的平均值?

1 个答案:

答案 0 :(得分:0)

最终,我如何在Dask数据帧的最后n天中计算“持续时间”列的平均值?

滚动API应该为您提供此功能

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