¿Cómo convertir una serie de pandas a fecha y hora?

Columna DataFrame para fecha y hora en Pandas

Paso 1: Prepare sus datos

Comenzaremos inicializando un DataFrame muy simple que veremos en nuestro ejemplo:

import pandas as pd  start_date = ['3/1/2023', '4/1/2023', '5/1/2023', '6/1/2023'] students = [15, 12, 12, 23]  data = pd.DataFrame ((dict(start_date= start_date,  students = students)))  print(data.head())

Veamos el contenido de DataFrame:

fecha_de_inicioestudiantes0

1

2

3

3/1/2023 15
4/1/2023 12
5/1/2023 12
01/06/2023 23

Paso 2: verifique los tipos de datos de su columna

En este paso opcional, veremos los tipos de datos de las columnas de DataFrame:

data.dtypes

Esto devolverá una serie que contiene los tipos de datos de las columnas de DataFrame:

start_date    object students       int64 dtype: object

Como puede ver, la columna start_date, que contiene datos que, aunque tienen formato de fecha, en realidad contienen cadenas.

Paso 3: convertir la serie en un objeto de fecha y hora

Para convertir start_date al formato de fecha y hora, en nuestro caso en formato aaaa-mm-dd, tiene un par de opciones:

Usa el método astype():

data['start_date'].astype('datetime64')

Utilice la función pd.to_datetime:

Ambos emitirán su serie de cadenas al objeto de fecha y hora:

0   2023-03-01 1   2023-04-01 2   2023-05-01 3   2023-06-01 Name: start_date, dtype: datetime64[ns]

Paso 4: Persiste tus cambios en el DataFrame

Para conservar sus cambios, simplemente vuelva a asignar la serie convertida al marco de datos, por ejemplo:

data['start_date'] = data['start_date'].astype('datetime64')

Ahora puede verificar sus tipos de datos de DataFrame:

data.dtypes

Tenga en cuenta que el tipo de datos de la fecha de inicio es datetime:

start_date    datetime64[ns] students               int64 dtype: object

Cambiar el formato de fecha y hora y convertir a cadena

Podemos usar el formateador strftime para formatear una serie de valores de fecha y hora. El resultado es una serie de objetos (cadenas)

pd.to_datetime(data['start_date']).dt.strftime('%d/%m/%y')

Solución de problemas

Si intenta llamar a strftime en una serie de objetos, recibirá el siguiente error:

AttributeError: Can only use .dt accessor with datetimelike values

Puede corregir este error llamando a strftime solo en objetos de tiempo de datos como se muestra arriba.