大規模なデータセットで過去 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"])
基本的に、関数は「id コード」でグループ化し、「entry_time_flat」(日時オブジェクト) の最後の n 日間について、機能「期間」の平均値を計算します。
ただし、コードの効率を維持するために、Pandas DF に変換せずに、この関数を Dask データフレームで再現することをお勧めします。
前述のコードを Dask DF で実行すると、次のエラーが発生します。
TypeError: __init__() got an unexpected keyword argument 'level'
最終的に、Daskデータフレームの過去n日間の「期間」列の平均を計算するにはどうすればよいですか?