Cómo convertir la columna del DataFrame a Datetime en Pandas
-
Función de Pandas
to_datetime
para convertir la columna del DataFrame en datetime -
Método de
apply
del DataFrame para convertir la columna del DataFrame en fecha y hora - Métodos para convertir una columna del DataFrame en una comparación de rendimiento de fecha y hora
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
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
.
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 FacebookArtículo relacionado - Pandas DataFrame
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir un float en un entero en Pandas DataFrame
- Cómo clasificar Pandas DataFrame por los valores de una columna
- Cómo obtener el agregado de Pandas grupo por y suma
Artículo relacionado - Pandas DataFrame Column
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo obtener la suma de la columna de Pandas
- Cómo cambiar el orden de las columnas Pandas DataFrame
- Cómo convertir la columna del DataFrame en cadena en los pandas