如何在dask中实现`groupby`滚动平均?

时间:2018-12-26 07:24:26

标签: python pandas dask

我有一个数据框,我想groupby一些属性并计算Dask中数字列的rolling平均值。我知道groupby rolling在Dask中没有实现,但是我读到一个SO问题,表明它是可能的。

Dask rolling function by group syntax

当我在帖子中使用相同的语法时,出现错误:

UnpicklingError: invalid load key, '�'.

我不明白为什么我遇到了无法修复的错误。有人可以帮我做这个工作吗?

df.groupby(by=path)[metric].apply(lambda df_g: df_g[metric].rolling(5).mean(), meta=(metric, 'f8')).compute() 其中path是属性列的列表,而metric是数字列。

我还尝试了以下方法:

def moving_avg(partition):
    return partition.rolling(5).mean()

df.groupby(by=path)[metric].apply(moving_avg, meta='f8').compute()

我在Pyspark中使用滚动平均功能,在这里我通过groupby定义了分区,然后在其上滚动一个窗口。

样本数据:

           CATEGORY_NAME               MKT   ...         Growth   Sales
Date                                         ...                       
2017-01-07            TP              SIMS   ...         0.0000   17280
2017-01-07            TP           TOPRITE   ...        -0.4566    1825
2017-01-07            TP       GIANT HYPER   ...         0.0874   18417
2017-01-07            TP       GIANT HYPER   ...        -0.1359   10914
2017-01-07            TP       GIANT HYPER   ...         0.2245    4422
2017-01-07            TP           TOPRITE   ...         0.1084    1444
2017-01-07            TP       GIANT HYPER   ...         0.0542   18412
2017-01-07            TP            FENCER   ...         0.2766   25184
2017-01-07            TP       GIANT HYPER   ...        -0.0572   19466
2017-01-07            TP           TOPRITE   ...         0.1795    1503
2017-01-07            TP       GIANT HYPER   ...         0.0770   13615

说我想对["CATEGORY_NAME", "MKT"]进行分组,并取Sales的滚动平均值。

1 个答案:

答案 0 :(得分:0)

有关答案,请参见按组语法进行快速滚动功能。 UnpicklingError与问题无关。