Como Converter a Coluna DataFrame para DataTempo em Pandas
-
Função Pandas
to_datetime
para converter a coluna DataFrame para datatime -
DataFrame
apply
Método para converter a coluna DataFrame para DataTime - Métodos para Converter a Coluna DataFrame para Comparação de Desempenho DataFrame
Vamos introduzir métodos para converter a coluna DataFrame de Pandas para Python datetime.
- Pandas
to_datetime()
função - DataFrame método
apply
para operar em elementos na coluna
Usaremos o mesmo DataFrame abaixo neste artigo.
>>> from datetime import datetime, timedelta
>>> from pandas import DataFrame
>>> df = DataFrame.from_items(
[('Alfa', [1, 2, 3]),
('Bravo', [4, 5, 6]),
('Datetime', [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y, %H:%M:%S") for _ in range(3)])],
orient='index',
columns=['A', 'B', 'C']).T
>>> df
Alfa Bravo Datetime
A 1 4 12/07/2019, 14:08:55
B 2 5 12/06/2019, 14:08:55
C 3 6 12/05/2019, 14:08:55
Função Pandas to_datetime
para converter a coluna DataFrame para datatime
Pandas to_datetime
função converte o argumento dado para datetime
.
pandas.to_datetime(param, format="")
O formato especifica o padrão da string de data/hora. É o mesmo com o formato em stftime
ou strptime
no módulo Python datetime
.
>>> df
Alfa Bravo Datetime
A 1 4 12/07/2019, 14:08:55
B 2 5 12/06/2019, 14:08:55
C 3 6 12/05/2019, 14:08:55
>>> df['Datetime'] = pd.to_datetime(df['Datetime'], format="%m/%d/%Y, %H:%M:%S")
>>> df
Alfa Bravo Datetime
A 1 4 2019-12-07 14:08:55
B 2 5 2019-12-06 14:08:55
C 3 6 2019-12-05 14:08:55
A função to_datetime()
não modifica os dados DataFrame
no local, portanto precisamos atribuir o retorno de Pandas Series
para a coluna específica DataFrame
.
to_datetime()
Função é inteligente para converter para Datetime
A função to_datetime()
poderia fazer a conversão para datetime
de uma forma inteligente sem dar a string de formato datetime
. Ele irá encontrar o padrão de string automaticamente e de forma inteligente.
>>> df['Datetime'] = pd.to_datetime(df['Datetime'])
>>> df
Alfa Bravo Datetime
A 1 4 2019-12-07 14:08:55
B 2 5 2019-12-06 14:08:55
C 3 6 2019-12-05 14:08:55
Embora o to_datetime
pudesse fazer seu trabalho sem dar o format
de forma inteligente, a velocidade de conversão é muito menor do que aquela quando o format
é dado.
Nós poderíamos definir a opção infer_datetime_format
de to_datetime
para ser True
para mudar a conversão para um modo mais rápido se o formato da string datetime pudesse ser inferido sem dar a string format
.
Isto poderia aumentar a velocidade de análise em 5~6 vezes.
DataFrame apply
Método para converter a coluna DataFrame para DataTime
apply(func, *args, **kwds)
O método apply
de DataFrame
aplica a função func
a cada coluna ou linha.
Poderíamos utilizar a função lambda
no lugar de func
pela simplicidade.
>>> df['Datetime'] = df['Datetime'].apply(lambda _: datetime.strptime(_,"%m/%d/%Y, %H:%M:%S"))
>>> df
Alfa Bravo Datetime
A 1 4 2019-12-07 14:44:35
B 2 5 2019-12-06 14:44:35
C 3 6 2019-12-05 14:44:35
Métodos para Converter a Coluna DataFrame para Comparação de Desempenho DataFrame
Vamos utilizar o timeit
para comparar o desempenho temporal de ambos os métodos introduzidos neste artigo.
In [1]: %timeit pd.to_datetime(df['Datetime'], format="%m/%d/%Y, %H:%M:%S")
452 µs ± 85.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [2]: %timeit df['Datetime'].apply(lambda _: datetime.strptime(_,"%m/%d/%Y, %H:%M:%S"))
377 µs ± 58.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
O método apply
é ainda ligeiramente melhor que o método nativo de Pandas to_datetime
, com cerca de 80% do tempo de execução da função to_datetime
.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArtigo relacionado - Pandas DataFrame
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como Converter um Flutuador em um Inteiro em Pandas DataFrame
- Como Classificar Pandas DataFrame pelos Valores de uma Coluna
- Como Obter o Agregado de Pandas Group-By e Sum
Artigo relacionado - Pandas DataFrame Column
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como obter a Soma da Coluna Pandas
- Como mudar a ordem das colunas Pandas DataFrame
- Como converter a coluna DataFrame em String em Pandas