Como converter colunas para datetime no pandas
Freqüentemente, você pode estar interessado em converter uma ou mais colunas de um DataFrame do pandas para o formato DateTime. Felizmente, isso é fácil de fazer usando a função to_datetime() .
Este tutorial mostra vários exemplos de uso desta função no seguinte 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
Exemplo 1: Converter uma única coluna em DateTime
O código a seguir mostra como converter a coluna “start_date” de uma string para o formato 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
Observe que a função to_datetime() é inteligente e geralmente pode inferir o formato de data correto a ser usado, mas você também pode especificar qual formato usar com o argumento format :
#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
Exemplo 2: Converter múltiplas colunas em DateTime
O código a seguir mostra como converter as colunas “start_date” e “end_date” de strings para formatos 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
Exemplo 3: Converter colunas para o formato DateTime com segundos
Em alguns casos, você também pode ter colunas que incluem uma data, bem como horas, minutos e segundos, como o seguinte 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
Novamente, a função to_datetime() é inteligente e geralmente pode inferir o formato correto a ser usado sem que o especifiquemos:
#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
Claro, você provavelmente encontrará uma variedade de formatos DateTime estranhos, então você pode precisar usar o argumento format para dizer ao Python exatamente qual formato DateTime usar.
Nesses casos, consulte esta página para obter uma lista completa de operadores %DateTime que você pode usar para especificar formatos.
Recursos adicionais
Como converter DateTime em data no Pandas
Como converter strings para flutuar no Pandas