我在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']
就变成了一个数组:是吗?
我该怎么做才能将滚动选择的结果“转换”成一列?
是的,看起来hp_filter函数返回一个数组。所以你需要添加如下内容:
def func_HP(close, params):
cycle,trend = sm.tsa.filters.hpfilter(close,params)
df_trend = pd.dataframe(trend)
return df_trend