达摄-滚动应用-result.head()会产生错误

时间:2018-08-21 13:18:25

标签: pandas dask

我有一个具有以下结构的简单数据框:

index = dt (datetime64[ns]), val (float)
        dt2                , val2 
        ...                , ....

        dtN                , valN

使用以下方式读取:

import dask.dataframe as dd
import pandas as  pd
underlying = dd.read_csv('data.csv',parse_dates=['Date'])

我有一个自定义功能:

def generate_n_day_rolling_vol(df, n_days=30):
    return ((pd.np.log(df / df.shift(1))).rolling(n_days).std() * (252. ** .5)).dropna()

现在,我想应用expanding window calculation,但是看到dask不支持扩展,仅支持rolling

因此,要实现一种扩展的calc,我想进行滚动,但窗口大小应等于我数据帧的长度,并且min_periods应该很小。

这看起来像:

rolling_obj = underlying[['val']].rolling(len(data['val']),min_periods=100)

然后我申请:

x=rolling_obj.apply(pd.DataFrame.std)

当我想通过运行x.head()查看结果时,会得到:

~/anaconda2/envs/options_analytics/lib/python3.5/site-packages/pandas/core/generic.py in stat_func(self, axis, skipna, level, ddof, numeric_only, **kwargs)
   9626             skipna = True
   9627         if axis is None:
-> 9628             axis = self._stat_axis_number
   9629         if level is not None:
   9630             return self._agg_by_level(name, axis=axis, level=level,

AttributeError: 'numpy.ndarray' object has no attribute '_stat_axis_number'

我在这里做错了什么?我真的很想使用dask并认为我必须做一些新手。

谢谢

0 个答案:

没有答案