Как указать год, месяц, день в datetime из Dataframe? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть этот фрейм данных:

7542  08/01/2015 00:09:19
7543  08/01/2015 01:01:07
7544  08/01/2015 01:05:42
7545  08/01/2015 01:53:52
7546  08/01/2015 02:28:56

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

ValueError: toдля ассемблерных отображений требуется, по крайней мере, указать [год, месяц, день]: [день, месяц, год] отсутствует

Я пробовал pd.to_datetime(dataf.stack()).unstack() и получил NaT.

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Поработав, я нашел простой способ сделать это:

sample_df = pd.DataFrame({'datetime':['08/01/2015 00:09:19', '08/01/2015 01:01:07', '08/01/2015 01:05:42']})
pd.to_datetime(sample_df.datetime, infer_datetime_format=True)

Да, это так просто.Я думаю, что to_datetime нужны данные в определенном формате, и передача определенного столбца кадра данных помогает ему получить этот формат.

0 голосов
/ 08 июня 2018

В дополнение к infer_datetime_format=True вы также можете явно передать формат:

>>> pd.to_datetime(sample_df['datetime'], format='%m/%d/%Y %H:%M:%S') 
0   2015-08-01 00:09:19
1   2015-08-01 01:01:07
2   2015-08-01 01:05:42
Name: datetime, dtype: datetime64[ns]

Я недавно задал вопрос по этому поводу, и от @AlexRiley есть отличный ответ: Inferringформат даты против передачи парсера .

0 голосов
/ 07 июня 2018

Ошибка означает, что ваш код выбирает DataFrame, поэтому pd.to_datetime ищет year, month и day столбцы :

print (pd.to_datetime(dataf))

ValueError: для сборки отображений требуется, как минимум, указать [год, месяц, день]: [день, месяц, год] отсутствует


Решение - выбрать столбец date с параметром dayfirst=True если первый номер - день в to_datetime:

dataf['date'] = pd.to_datetime(dataf['date'], dayfirst=True)
print (dataf)
                    date
7542 2015-01-08 00:09:19
7543 2015-01-08 01:01:07
7544 2015-01-08 01:05:42
7545 2015-01-08 01:53:52
7546 2015-01-08 02:28:56

print (dataf.dtypes)
date    datetime64[ns]
dtype: object

Настройка :

d = {'date': {7542: '08/01/2015 00:09:19', 7543: '08/01/2015 01:01:07', 7544: '08/01/2015 01:05:42', 7545: '08/01/2015 01:53:52', 7546: '08/01/2015 02:28:56'}}
dataf = pd.DataFrame(d)
print (dataf)
                     date
7542  08/01/2015 00:09:19
7543  08/01/2015 01:01:07
7544  08/01/2015 01:05:42
7545  08/01/2015 01:53:52
7546  08/01/2015 02:28:56
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...