Como Converter a Coluna DataFrame para DataTempo em Pandas
-
Função Pandas
to_datetimepara converter a coluna DataFrame para datatime -
DataFrame
applyMé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
applypara 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
