¿Cómo convertir cadenas a fechas en pandas DataFrame?

Emitir cadenas a fecha y hora en Pandas

Puede usar pd.datetime() o Series.astype() para convertir una columna DataFrame de objeto a objeto de fecha. He aquí cómo hacer que funcione en Python:

pd.to_datetime (your_df['col_name'], format="your_date_format")  # or alternatively: your_df['col_name'].astype ('datetime64[ns]', 'your_date_format')

En el tutorial de hoy, aprenderemos cómo cambiar el formato de las columnas de objeto (cadena) en pandas DataFrame al formato Datetime64.

Crear datos de ejemplo

import pandas as pd  dates = ['01-01-24', '01-01-24', '01-01-24', '01-01-24', '02-01-24', '02-01-24'] sales = [345, 481, 331, 387, 244, 402]  revenue = pd.DataFrame(dict (dates = dates, sales=sales)) revenue.head()

Veamos los datos:

fechasventas0

1

2

3

4

5

01-01-24 345
01-01-24 481
01-01-24 331
01-01-24 387
02-01-24 244
02-01-24 402

Si observamos los tipos de datos pandas de nuestro objeto DataFrame, veremos que la columna de fechas es un objeto.

revenue.dtypes

Esto devolverá:

dates    object sales     int64 dtype: object

Convertir cadenas a fechas en pandas

Tenemos dos formas simples de convertir nuestros datos a los formatos datimetime:

  • Usando la función to_datetime:
  • revenue['dates'] = pd.to_datetime(revenue['dates'],format="%d-%m-%y")
  • Usando el método de la serie astype():
  • revenue['dates'] = revenue['dates'].astype('datetime64[ns]',  '%d-%m-%y')

    Veamos nuestro DataFrame:

    print ( revenue.head())

    Ambos darán el mismo resultado:

    fechasventas0

    1

    2

    3

    4

    5

    2024-01-01 345
    2024-01-01 481
    2024-01-01 331
    2024-01-01 387
    2024-02-01 244
    2024-02-01 402

    Si revisamos los tipos de datos, veremos que la columna de fechas ahora tiene un tipo de fecha y hora.

    dates    datetime64[ns] sales             int64 dtype: object

    Puede usar la misma técnica para transformar varias columnas de DataFrame en fechas.

    Emitir cadenas con hora, minutos y segundos hasta la fecha y hora

    Usando una lógica similar, también puede manejar cadenas que tienen un formato de marca de tiempo y convertirlas en fechas y horas.

    stamps = ['01-01-24 06:00:00', '01-01-24 12:00:00', '01-01-24 18:00:00', '02-01-24 06:00:00', '02-01-24 12:00:00', '02-01-24 12:00:00'] sales = [345, 481, 331, 387, 244, 402] revenue = pd.DataFrame(dict (stamps = stamps, sales=sales))

    Podemos convertir la columna de sellos a fecha y hora de la siguiente manera:

    pd.to_datetime(revenue['stamps'],format="%d-%m-%y %H:%M:%S")

    Tenga en cuenta el parámetro de formato, que debe especificarse para facilitar la conversión.

    Ahora que la columna de sellos es una fecha, podemos acceder fácilmente a sus DateTimeProperties usando el descriptor de acceso dt, por ejemplo:

    revenue['stamps'].dt.year revenue['stamps'].dt.month_name() revenue['stamps'].dt.isocalendar().week

    Aprendizaje adicional

    ¿Cómo encontrar la diferencia entre varias fechas y horas en pandas y Python?