TypeError:'Series'对象不可调用 - 滚动窗口 - Python

问题描述 投票:1回答:1

我在Python中定义了Hodrick-Prescott(HP)函数,如下所示:

import statsmodels.api as sm

def func_HP(close, params):
    cycle,trend = sm.tsa.filters.hpfilter(close,params)
    return trend

如果我将该函数应用于数据文件中的列,如下所示:

df['Trend'] = func_HP(df['Close'],18000)

它工作正常,我得到整个“静态”列的趋势值。

我想将HP功能应用于列df ['Close']的滚动窗口。窗口长度为240.因此,HP过滤器将应用于滚动240记录。我用过这段代码:

x = df.rolling(window=240, min_periods=240, on='Close').apply(func_HP(df['Close'],18000))

但我得到错误:

TypeError:'Series'对象不可调用

我猜这是因为一旦你应用了滚动窗口,列df['Close']就变成了一个数组:是吗?

我该怎么做才能将滚动选择的结果“转换”成一列?

python pandas series statsmodels rolling-computation
1个回答
0
投票

是的,看起来hp_filter函数返回一个数组。所以你需要添加如下内容:

def func_HP(close, params):
    cycle,trend = sm.tsa.filters.hpfilter(close,params)
    df_trend = pd.dataframe(trend)
    return df_trend
© www.soinside.com 2019 - 2024. All rights reserved.