Dada una fecha, la tarea es escribir un programa Python para obtener el día hábil anterior más reciente a partir de la fecha dada.
Ejemplo:
Entrada: fecha_prueba = fecha y hora (2020, 1, 31)
Salida : 2020-01-30 00:00:00
Explicación: 31 de enero de 2020, siendo viernes, el último día hábil es el jueves, es decir, 30 de enero.
Entrada: prueba_fecha = fecha y hora (2020, 2, 3)
Salida : 2020-01-31 00:00:00
Explicación: 3 de febrero de 2020, siendo lunes, el último día hábil es el viernes, es decir, 31 de enero.
Método 1: Usando timedelta() + día de la semana()
En este, realizamos la tarea de restar 3 en el caso del lunes, 2 en el caso del domingo y 1 en el resto de días. timedelta() realiza la tarea de restar, y las sentencias condicionales verifican un día de la semana.
Python3
# Python3 code to demonstrate working of # Last business day # using timedelta() + conditional statements + weekday() from datetime import datetime, timedelta # initializing dates test_date = datetime(2020, 1, 31) # printing original date print("The original date is : " + str(test_date)) # getting difference diff = 1 if test_date.weekday() == 0: diff = 3 elif test_date.weekday() == 6: diff = 2 else : diff = 1 # subtracting diff res = test_date - timedelta(days=diff) # printing result print("Last business day : " + str(res))
Producción:
The original date is : 2020-01-31 00:00:00 Last business day : 2020-01-30 00:00:00
Método 2: Usando max() + % operador + timedelta()
Realice tareas de manera similar, siendo la única diferencia el método para calcular los cambios de diferencia para obtener el operador max() y %.
Python3
# Python3 code to demonstrate working of # Last business day # using max() + % operator + timedelta() from datetime import datetime, timedelta # initializing dates test_date = datetime(2020, 1, 31) # printing original date print("The original date is : " + str(test_date)) # getting difference # using max() to get differences diff = max(1, (test_date.weekday() + 6) % 7 - 3) # subtracting diff res = test_date - timedelta(days=diff) # printing result print("Last business day : " + str(res))
Producción:
The original date is : 2020-01-31 00:00:00 Last business day : 2020-01-30 00:00:00
Método 3: Usar pd.tseries.offsets.BusinessDay(n)
En esto, creamos una compensación de día hábil de 1 día y restamos de la fecha de inicialización. Esto devuelve el día hábil anterior como se desee.
Python3
# Python3 code to demonstrate working of # Last business day # using pd.tseries.offsets.BusinessDay(n) import pandas as pd from datetime import datetime # initializing dates test_date = datetime(2020, 2, 3) # printing original date print("The original date is : " + str(test_date)) # Creating Timestamp ts = pd.Timestamp(str(test_date)) # Create an offset of 1 Business days offset = pd.tseries.offsets.BusinessDay(n=1) # getting result by subtracting offset res = test_date - offset # printing result print("Last business day : " + str(res))
Producción :
The original date is : 2020-02-03 00:00:00 Last business day : 2020-01-31 00:00:00
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA