Ошибка типа: объект 'Series' не вызывается - Скользящее окно - Python

1

У меня есть функция Hodrick-Prescott (HP), определенная в Python, следующим образом:

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'] становится массивом: это правильно?

И что я могу сделать, чтобы "преобразовать" результат скользящего выбора в столбец?

  • 0
    Если вы используете внешние библиотеки (как кажется, основанные на вашем коде), пожалуйста, включите их в теги вопроса. В наиболее широко используемых библиотеках есть тег.
Теги:
pandas
series
statsmodels

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню