Data Analysis

Extracción eficiente del año y mes de columnas Datetime en Pandas

Spread the love

Extraer el año y el mes de una columna de fecha y hora en Pandas es una tarea común. Este artículo explora tres métodos eficientes, comparando sus fortalezas y debilidades para ayudarte a elegir el mejor enfoque para tus necesidades.

Tabla de contenido

Usando el accesor .dt

El accesor .dt proporciona una forma sencilla y eficiente de extraer componentes de fecha y hora. A menudo es el método preferido debido a su legibilidad y concisión.


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month

print(df)

Este código mostrará:


         date  year  month
0 2024-03-15  2024      3
1 2023-11-20  2023     11
2 2024-05-10  2024      5

Utilizando el método strftime()

El método strftime() ofrece mayor flexibilidad, permitiendo personalizar el formato de salida. Esto es particularmente útil cuando se necesitan representaciones de cadena específicas del año y el mes para informes u otros propósitos.


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

df['year'] = df['date'].dt.strftime('%Y')
df['month'] = df['date'].dt.strftime('%m') # Use '%b' para el nombre abreviado del mes, '%B' para el nombre completo

print(df)

Esto producirá:


         date  year month
0 2024-03-15  2024   03
1 2023-11-20  2023   11
2 2024-05-10  2024   05

Recuerda consultar la documentación de strftime() de Python para una lista completa de códigos de formato.

Acceso directo con DatetimeIndex

Si tu columna ‘date’ ya es un DatetimeIndex, puedes acceder directamente a los atributos del año y el mes. Si bien es menos común, esto puede ser eficiente si tus datos ya están en este formato.


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

date_index = pd.DatetimeIndex(df['date'])
df['year'] = date_index.year
df['month'] = date_index.month

print(df)

Esto produce la misma salida que el primer ejemplo. Sin embargo, este método generalmente es menos preferido a menos que ya estés trabajando con un objeto DatetimeIndex.

Conclusión: El accesor .dt ofrece el enfoque más conciso y eficiente para la mayoría de los escenarios. strftime() proporciona un mayor control de formato, mientras que el acceso directo a DatetimeIndex es útil en situaciones específicas. Elige el método que mejor se adapte a tus necesidades y estilo de codificación. Siempre asegúrate de que tu columna ‘date’ sea de tipo datetime usando pd.to_datetime() si es necesario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *