Ошибка типа: объект 'Series' не вызывается - Скользящее окно - Python - PullRequest
0 голосов
/ 24 августа 2018

У меня есть функция Ходрика-Прескотта (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'] становится массивом: это верно?

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

1 Ответ

0 голосов
/ 24 августа 2018

Да, похоже, функция hp_filter возвращает массив. Поэтому вам нужно добавить что-то вроде:

def func_HP(close, params):
    cycle,trend = sm.tsa.filters.hpfilter(close,params)
    df_trend = pd.dataframe(trend)
    return df_trend
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...