Невозможно преобразовать индекс в формат даты - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть данные, которые находятся в 64 в индексе со значениями, такими как "01/11/2018" в индексе. Это данные, которые были импортированы из CSV. Я не могу преобразовать его в формат "01-11-2018". Как мне это сделать, потому что я получаю сообщение об ошибке:

'данные времени 0 не соответствуют формату'% Y '(совпадение)'

Я получил данные со следующего сайта: https://www.nasdaq.com/symbol/spy/historical и вы можете найти значок «Загрузить этот файл в формате Excel» внизу.

  import datetime

  spyderdat.index =  pd.to_datetime(spyderdat.index, format='%Y')
  spyderdat.head()

Как мне правильно отформатировать это?

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Если ваш ввод - строка, простое преобразование / в - не решит проблему.
Реальная проблема в том, что вы сказали to_datetime ожидать, что входная строка будет только четырехзначным годом , но вы передали ей целую дату, дни и месяцы включен.

Если вы намеревались использовать только часть года, сначала вы должны вручную извлечь год с помощью чего-то вроде split.
Если вы хотите использовать полную дату в качестве значения, вам нужно изменить формат на что-то вроде %d/%m/%Y. (Хотя я не могу сказать, являются ли ваши входные данные первыми днями или первыми месяцами из-за их значений.)

0 голосов
/ 02 ноября 2018

Самый простой способ - попробовать

datetime.datetime.strptime("01/11/2018", '%d/%m/%Y').strftime('%d-%m-%Y')
0 голосов
/ 02 ноября 2018

Ваша строка формата должна точно соответствовать:

import datetime

spyderdat.index =  pd.to_datetime(spyderdat.index, format='%d/%m/%Y')
spyderdat.head()

Пример без spyder:

import datetime

date = "1/11/2018"
print(datetime.datetime.strptime(date,"%d/%m/%Y"))

Выход:

2018-11-01 00:00:00

Вы можете strftime эту дату-время, тогда как хотите. Смотрите ссылку для форматов. Или вы храните даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...