Numpy busday_count не учитывает праздничные дни

#python #pandas #numpy #date #python-holidays

Вопрос:

У меня есть набор данных, и мне нужно рассчитать рабочие дни с заданной даты по сегодняшний день, исключая данный список праздников. Я буду включать выходные.

Образец Даты:

введите описание изображения здесь

Это код, который я пробовал:

 import pandas as pd
import numpy as np
from datetime import date
df = pd.read_excel('C:\sample.xlsx')

#get todays date
df["today"] = date.today()
#Convert data type
start = df["R_REL_DATE"].values.astype('datetime64[D]')
end = df["today"].values.astype('datetime64[D]')
holiday = ['2021-06-19', '2021-06-20']
#Numpy function to find in between days
days = np.busday_count(start, end, weekmask='1111111', holidays=holiday)
#Add this column to dataframe
df["Days"] = days
df
 

Когда я запускаю этот код, он дает разницу между R_REL_DATE и сегодняшним днем, но не вычитает данные праздники.
введите описание изображения здесь

Пожалуйста, помогите, я хочу, чтобы данный список праздников был вычтен из дней.

Ответ №1:

Убедитесь today , что и R_REL_DATE находятся в формате pandas datetime с pd.to_datetime() :

 import pandas as pd
import numpy as np
import datetime
df = pd.DataFrame({'R_REL_DATE': {0: '7/23/2020', 1: '8/26/2020'},
 'DAYS IN QUEUE': {0: 338, 1: 304}})
df["today"] = pd.to_datetime(datetime.date.today())
df["R_REL_DATE"] = pd.to_datetime(df["R_REL_DATE"])
start = df["R_REL_DATE"].values.astype('datetime64[D]')
end = df["today"].values.astype('datetime64[D]')
holiday = ['2021-06-19', '2021-06-20']
#Numpy function to find in between days
days = np.busday_count(start, end, weekmask='1111111', holidays=holiday)
#Add this column to dataframe
df["Days"] = days - 1
df
Out[1]: 
  R_REL_DATE  DAYS IN QUEUE      today  Days
0 2020-07-23            338 2021-06-27   336
1 2020-08-26            304 2021-06-27   302