Im分组结果基于两个键,其中df包含10M +行,5个列,但对于我自己定义的函数f,在groupby()。apply(f)之后,groupby的结果一直重复第一组。
首先,我使用熊猫,它复制了第一组。 然后我尝试用4个分区进行dask,它复制了该分区的第一组。
应用功能
def f(x):
x['QUANTITY_'] = x['QUANTITY'].shift(len_week_predict).rolling(len_week_train).mean()
x = x.dropna()
mae = (x['QUANTITY_'] - x['QUANTITY']).abs().sum()
mae_f = (x['QUANTITY'].shift(1) - x['QUANTITY']).dropna().abs().sum() * (len(x) / (len(x)-1))
if mae_f == 0:
mase = mae / sigma
else:
mase = mae / mae_f
return pd.Series([mae, mae_f, mase], index=['mae', 'mae_f', 'mase'])
我自己定义的函数f是否存在任何问题?
import dask.dataframe as dd
ddf_ = dd.from_pandas(df_, npartitions=4)
df_bsl = ddf_.groupby(by=['CUST_NUMBER', 'ITEM_NUM']).apply(f).compute(scheduler='processes')
我希望groupby没有重复的结果。