¿Cómo obtener el valor de mes y trimestre de las fechas y horas en Python?

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?