Как рассчитать разницу между двумя столбцами даты, исключая выходные и выходные в Великобритании - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть два столбца даты в моем фрейме данных «Назначено» и «Завершено», которые являются моими start_date и end_date (формат: дд / мм / гггг).

start_date = pd.to_datetime(df['Assigned on'])
end_date = pd.to_datetime(df['Completed'])

Я также включил список праздников:

ukholidaylist = pyholidays.UnitedKingdom()
unit_hour='hour'

Как рассчитать разницу во времени между двумя столбцами даты в днях, исключая праздничные и выходные дни?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Код просматривает все даты между назначенными и полными датами и исключает любые дни, которые есть в списке выходных.

import pandas as pd
import datetime as dt

df  = pd.DataFrame(data={
    'Assigned':pd.to_datetime(['2020-1-1','2020-1-5','2020-1-10']),
    'Completed':pd.to_datetime(['2020-1-11','2020-1-15','2020-1-20'])})
df
    Assigned    Completed
0   2020-01-01  2020-01-11
1   2020-01-05  2020-01-15
2   2020-01-10  2020-01-20

holydays = pd.to_datetime(['2020-01-04','2020-01-05'])

def num_working_days(row):
    return pd.date_range(start=row[0],end=row[1], freq='D')

df['dates_between'] = df.apply(num_working_days,axis=1)

def business_days_between(i):
    return len(i) - sum(holydays.isin(i))

df['business_days_between'] = df['dates_between'].apply(business_days_between)
df.drop('dates_between', axis=1, inplace=True)
df

    Assigned    Completed   business_days_between
0   2020-01-01  2020-01-11  9
1   2020-01-05  2020-01-15  10
2   2020-01-10  2020-01-20  11
0 голосов
/ 05 апреля 2020

Если у вас есть две даты, вы можете просто вычесть их. Попробуйте это:

from datetime import date

    d0 = date(2008, 8, 18)
    d1 = date(2008, 9, 26)
    delta = d1 - d0
    print(delta.days)
...