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.