TypeError:“系列”对象不可调用-滚动窗口-Python

时间:2018-08-24 12:19:00

标签: python pandas series statsmodels rolling-computation

我有一个用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:“系列”对象不可调用

我想那是因为一旦应用滚动窗口,列df['Close']就会变成数组:对吗?

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

1 个答案:

答案 0 :(得分:0)

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

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