Как преобразовать столбцы в datetime в pandas
Часто вас может заинтересовать преобразование одного или нескольких столбцов DataFrame pandas в формат DateTime. К счастью, это легко сделать с помощью функции to_datetime() .
В этом руководстве показано несколько примеров использования этой функции в следующем DataFrame:
import numpy as np import pandas as pd #createDataFrame 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 с секундами
В некоторых случаях у вас также могут быть столбцы, содержащие дату, а также часы, минуты и секунды, например следующий DataFrame:
#createDataFrame 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, которые можно использовать для указания форматов.
Дополнительные ресурсы
Как преобразовать DateTime в дату в Pandas
Как преобразовать строки в числа с плавающей запятой в Pandas