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:
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:
revenue['dates'] = pd.to_datetime(revenue['dates'],format="%d-%m-%y")
revenue['dates'] = revenue['dates'].astype('datetime64[ns]', '%d-%m-%y')
Veamos nuestro DataFrame:
print ( revenue.head())
Ambos darán el mismo resultado:
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?