我有一个数据框,我想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
的滚动平均值。