Попытка работать со временем, но аргумент typeerror: float () должен быть строкой или числом - PullRequest
0 голосов
/ 16 марта 2020

У меня есть набор данных, который выглядит следующим образом, который я извлек из IEX. Дата является временной меткой, как показано ниже после того, как я преобразовал данные в массив.

    date         close    volume
0   2020-02-03   308.66   43496401
1   2020-02-04   318.85   34154134
2   2020-02-05   321.45   29706718
3   2020-02-06   325.21   26356385

[[Timestamp('2020-02-03 00:00:00') 308.66 43496401]
[Timestamp('2020-02-04 00:00:00') 318.85 34154134]
[Timestamp('2020-02-05 00:00:00') 321.45 29706718]
[Timestamp('2020-02-06 00:00:00') 325.21 26356385]]

Это мой код ниже.

start = datetime(2020, 2, 1)
end = datetime(2020, 2, 27)

def get_price_vol(symbol):
    get_info= get_historical_data(symbol, start, end, token='xyz',
                                  close_only=True, output_format='pandas' )
    return get_info
aapl_new = get_price_vol('aapl').reset_index()


x = np.array(aapl_new.drop(['prediction'],1))
x = x[:-forecasting_data]
print(x)

Когда я запускаю код ниже, я получаю эту ошибку:

svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1) 
svr_rbf.fit(x_train, y_train)

> Аргумент TypeError: float () должен быть строкой или числом , а не 'Timestamp'

Я видел и пробовал другие ответы на стек, но ни один из них не работает. Я хотел бы сохранить даты, но мне нужно конвертировать метку времени. Любые вклады по этому вопросу приветствуются. Спасибо!

1 Ответ

1 голос
/ 16 марта 2020

Если вы хотите сохранить даты, вы должны преобразовать их в UNIX Метки времени:

Для этого используйте:

df.date = df.date.astype(int) / 10 ** 9

Кстати, почему вы сохраняете даты как переменная в вашей модели? Я бы не рекомендовал делать это: вы должны использовать фиктивную переменную для отслеживания сезонности.

...