Как преобразовать столбцы в DateTime в Pandas


Часто вас может заинтересовать преобразование одного или нескольких столбцов в кадре данных pandas в формат DateTime. К счастью, это легко сделать с помощью функции to_datetime() .

В этом руководстве показано несколько примеров использования этой функции в следующем кадре данных:

import numpy as np
import pandas as pd

#create DataFrame
df = pd.DataFrame({'event': ['A', 'B', 'C'],
 'start_date': ['20150601', '20160201', '20170401'],
 'end_date': ['20150608', '20160209', '20170416'] })

#view DataFrame
df

 event start_date end_date
0 A 20150601 20150608
1 B 20160201 20160209
2 C 20170401 201704161

#view column data types
df.dtypes

event object
start_date object
end_date object
dtype: object

Пример 1. Преобразование одного столбца в DateTime

В следующем коде показано, как преобразовать столбец start_date из строки в формат DateTime:

#convert start_date to DateTime format
df['start_date'] = pd.to_datetime(df['start_date'])

#view DataFrame
df

 event start_date end_date
0 A 2015-06-01 20150608
1 B 2016-02-01 20160209
2 C 2017-04-01 20170416

#view column date types
df.dtypes

event object
start_date datetime64[ns]
end_date object
dtype: object

Обратите внимание, что функция to_datetime() умна и обычно может вывести правильный формат даты для использования, но вы также можете указать формат для использования с аргументом формата :

#convert start_date to DateTime format
df['start_date'] = pd.to_datetime(df['start_date'], format='%Y%m%d')

#view DataFrame
df

 event start_date end_date
0 A 2015-06-01 20150608
1 B 2016-02-01 20160209
2 C 2017-04-01 20170416

#view column date types
df.dtypes

event object
start_date datetime64[ns]
end_date object
dtype: object

Пример 2. Преобразование нескольких столбцов в DateTime

В следующем коде показано, как преобразовать столбцы «start_date» и «end_date» из строк в форматы DateTime:

#convert start_date and end_date to DateTime formats
df[['start_date', 'end_date']] = df[['start_date', 'end_date']].apply (pd.to_datetime )

#view DataFrame
df

 event start_date end_date
0 A 2015-06-01 2015-06-08
1 B 2016-02-01 2016-02-09
2 C 2017-04-01 2017-04-16

#view column date types
df.dtypes

event object
start_date datetime64[ns]
end_date datetime64[ns]
dtype: object

Пример 3. Преобразование столбцов в формат DateTime с секундами

В некоторых случаях у вас также могут быть столбцы, содержащие дату вместе с часами, минутами и секундами, например следующий кадр данных:

#create DataFrame
df = pd.DataFrame({'event': ['A', 'B', 'C'],
 'start_date': ['20150601043000', '20160201054500', '20170401021215'],
 'end_date': ['20150608', '20160209', '20170416'] })

#view DataFrame
df

 event start_date end_date
0 A 20150601043000 20150608
1 B 20160201054500 20160209
2 C 20170401021215 20170416

Опять же, функция to_datetime() умна и обычно может определить правильный формат для использования без нашего указания:

#convert start_date to DateTime format
df['start_date'] = pd.to_datetime(df['start_date'])

#view DataFrame
df

 event start_date end_date
0 A 2015-06-01 04:30:00 20150608
1 B 2016-02-01 05:45:00 20160209
2 C 2017-04-01 02:12:15 20170416

#view column date types
df.dtypes

event object
start_date datetime64[ns]
end_date object
dtype: object

Конечно, в дикой природе вы, вероятно, столкнетесь с множеством странных форматов DateTime, поэтому вам, возможно, придется использовать аргумент формата , чтобы точно указать Python, какой формат DateTime использовать.

В таких случаях обратитесь к этой странице за полным списком операторов % DateTime, которые можно использовать для указания форматов.

Дополнительные ресурсы

Как преобразовать дату и время в дату в pandas
Как преобразовать строки в числа с плавающей запятой в Pandas