Как сказано в заголовке, я не могу запустить этот код:
def simple_map(x):
y = seasonal_decompose(x,model='additive',extrapolate_trend='freq',period=7,two_sided=False)
return y.trend
b.map_partitions(simple_map,meta=b).compute()
, где b - это DataFrame dask с индексом datetime и некоторыми сериями float в качестве столбцов, а Season_decompose - это statsmodel.
Это то, что я получаю:
Index(...) must be called with a collection of some kind, 'seasonal' was passed
Если я это делаю:
b.apply(simple_map,axis=0)
Где b - это pandas DataFrame Я получаю то, что хочу.
Где я ошибаюсь?
#
Воспроизводимый пример:
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose
d = {'Val1': [3, 2,7,5], 'Val2': [2, 4,8,6]}
b=pd.DataFrame(data=d)
b=b.set_index(pd.to_datetime(['25/12/1991','26/12/1991','27/12/1991','28/12/1991']))
def simple_map(x):
y =seasonal_decompose(x,model='additive',extrapolate_trend='freq',period=2,two_sided=False)
return y.trend
b.apply(simple_map,axis=0)
Val1 Val2
1991-12-25 0.70 0.9
1991-12-26 2.10 2.7
1991-12-27 3.50 4.5
1991-12-28 5.25 6.5
Это то, что я хочу сделать с dask, но не могу
Фактически:
import dask.dataframe as dd
c=dd.from_pandas(b, npartitions=1)
c.map_partitions(simple_map,meta=c).compute()
Произвести указанную выше ошибку.