Tiene una lista de objetos de fecha y hora. Su tarea es extraer los valores de mes y trimestre de cada uno de los elementos de su lista en varias listas nuevas: una que consta de números de meses, otra de nombres de meses y la última de trimestres.
Extraiga el mes y el trimestre de las fechas de Python
Primero crearemos una lista de objetos de fecha y hora. Me gusta usar la biblioteca pandas y específicamente el método pd.date_range() para eso:
import pandas import datetime dates = pd.date_range(start=my_dt, periods = 6, freq = 'B' ).to_pydatetime().tolist() print (dates)
Esto devolverá la siguiente lista:
[datetime.datetime(2023, 3, 29, 0, 0), datetime.datetime(2023, 3, 30, 0, 0), datetime.datetime(2023, 3, 31, 0, 0), datetime.datetime(2023, 4, 3, 0, 0), datetime.datetime(2023, 4, 4, 0, 0), datetime.datetime(2023, 4, 5, 0, 0)]
A continuación, usaremos comprensiones de listas simples para construir nuestras listas.
Obtener el número de mes de las fechas
my_month_lst = [d.month for d in dates] print(my_month_lst)
Esto devolverá:
[3, 3, 3, 4, 4, 4]
Extraer nombres de meses
Para este ejemplo, usaremos el formateador strftime, que permite convertir fecha y hora en valores de cadena, en este caso, usamos %B para escribir el nombre completo del mes.
my_month_name_lst = [d.strftime('%B') for d in dates] print(my_month_name_lst)
Esto devuelve:
['March', 'March', 'March', 'April', 'April', 'April']
Obtener nombres de trimestres a partir de fechas
Primero definiremos una función simple que usaremos para convertir las fechas a un trimestre:
def month_to_quarter (month): if month in [1,2,3]: return 'Q1' elif month in [4,5,6]: return 'Q2' elif month in [7,8,9]: return 'Q3' else: return 'Q4'
Entonces llamaremos a la función:
my_qtr_lst = [month_to_quarter (d.month) for d in dates]
Esto generará la siguiente lista de trimestres:
['Q1', 'Q1', 'Q1', 'Q2', 'Q2', 'Q2']
Seguir el aprendizaje
¿Cómo convertir una lista de cadenas a objetos Datetime en scripts de Python3?