Cómo convertir la columna del DataFrame a Datetime en Pandas

Jinku Hu 30 enero 2023
  1. Función de Pandas to_datetime para convertir la columna del DataFrame en datetime
  2. Método de apply del DataFrame para convertir la columna del DataFrame en fecha y hora
  3. Métodos para convertir una columna del DataFrame en una comparación de rendimiento de fecha y hora
Cómo convertir la columna del DataFrame a Datetime en Pandas

Introduciremos métodos para convertir la columna de Pandas DataFrame a la fecha Python.

  • Función to_datetime() de Pandas
  • Método DataFrame apply para operar sobre los elementos de la columna

Usaremos el mismo DataFrame que se muestra a continuación en este artículo.

>>> 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

Función de Pandas to_datetime para convertir la columna del DataFrame en datetime

La función to_datetime de Pandas convierte el argumento dado en datetime.

pandas.to_datetime(param, format="")

El formato especifica el patrón de la cadena datetime. Es lo mismo con el formato en stftime o strptime en el módulo datetime de Python.

>>> 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

La función to_datetime() no modifica los datos del DataFrame en el lugar, por lo tanto necesitamos asignar la Series de Pandas devuelta a la columna DataFrame específica.

La función to_datetime() es inteligente para convertir a Datetime

La función to_datetime() podría hacer la conversión a datetime de una manera inteligente sin dar la cadena de formato datetime. Encontrará el patrón de la cadena de forma automática e 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
Advertencia

Aunque to_datetime podría hacer su trabajo sin dar el format de forma inteligente, la velocidad de conversión es mucho menor que cuando se da el format.

Podríamos establecer la opción infer_datetime_format de to_datetime como True para cambiar la conversión a un modo más rápido si el formato de la cadena de fecha y hora pudiera ser inferido sin dar la cadena de format.

Podría incrementar la velocidad de análisis en 5~6 veces.

Método de apply del DataFrame para convertir la columna del DataFrame en fecha y hora

apply(func, *args, **kwds)

El método apply de DataFrame aplica la función func a cada columna o fila.

Podríamos usar la función lambda en lugar de func por la simplicidad.

>>> 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 convertir una columna del DataFrame en una comparación de rendimiento de fecha y hora

Utilicemos timeit para comparar el rendimiento del cronometraje de ambos métodos introducidos en este artículo.

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)

El método apply es incluso ligeramente mejor que el método nativo de Pandas to_datetime, con alrededor del 80% del tiempo de ejecución de la función to_datetime.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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 Facebook

Artículo relacionado - Pandas DataFrame

Artículo relacionado - Pandas DataFrame Column

Artículo relacionado - Python DateTime