Panda: ottieni giorni lavorativi tra la data di inizio e quella di fine


Puoi utilizzare i seguenti metodi per ottenere i giorni lavorativi nei panda:

Metodo 1: ottieni giorni lavorativi (esclusi tutti i fine settimana)

 business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')

Metodo 2: ottieni giorni lavorativi (esclusi tutti i fine settimana e le festività federali)

 from pandas. tseries . holiday import USFederalHolidayCalendar
from pandas. tseries . offsets import CustomBusinessDay

#define US business days
us_bus = CustomBusinessDay(calendar=USFederalHolidayCalendar())

#get all business days between certain start and end dates
us_business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ', freq=us_bus)

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Esempio 1: ottieni giorni lavorativi (esclusi tutti i fine settimana)

Un modo per ottenere un elenco di giorni lavorativi tra due date in Panda è utilizzare la funzione bdate_range() .

Tieni presente che questa funzione conta semplicemente il numero di giorni tra una data di inizio e una data di fine, esclusi i fine settimana.

Ad esempio, possiamo utilizzare la seguente sintassi per contare il numero di giorni lavorativi tra l’1/1/2022 e il 31/12/2022:

 import pandas as pd

#get all business days between certain start and end dates
business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')

#view first ten business days
print (business_days[0:10])

DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11', '2022-01-12',
               '2022-01-13', '2022-01-14'],
              dtype='datetime64[ns]', freq='B')

#view total number of business days
len (business_days)

260

L’oggetto denominato business_days contiene ogni giorno lavorativo compreso tra le date di inizio e di fine specificate.

E utilizzando la funzione len() , vediamo che il numero totale di giorni lavorativi tra le date di inizio e fine specificate è 260 .

Esempio 2: ottenere giorni lavorativi (esclusi tutti i fine settimana e le festività federali)

Per ottenere un elenco di giorni lavorativi tra due date in panda che escluda sia i fine settimana che le festività federali, dobbiamo utilizzare le funzioni del modulo pandas tseries .

Ad esempio, possiamo utilizzare la seguente sintassi per contare il numero di giorni lavorativi (tutti i giorni esclusi i fine settimana e i giorni festivi) tra l’1/1/2022 e il 31/12/2022:

 from pandas. tseries . holiday import USFederalHolidayCalendar
from pandas. tseries . offsets import CustomBusinessDay

#define US business days
us_bus = CustomBusinessDay(calendar=USFederalHolidayCalendar())

#get all business days between certain start and end dates
us_business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ', freq=us_bus)

#view first ten business days
print (us_business_days[0:10])

DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11', '2022-01-12',
               '2022-01-13', '2022-01-14'],
              dtype='datetime64[ns]', freq='C')

#view total number of business days
len (us_business_days)

250

L’oggetto chiamato us_business_days contiene tutti i giorni lavorativi (tutti i giorni esclusi i fine settimana e i giorni festivi) tra le date di inizio e di fine specificate.

E utilizzando la funzione len() , vediamo che il numero totale di giorni lavorativi tra le date di inizio e fine specificate è 250 .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come aggiungere e sottrarre giorni da una data in Pandas
Come convertire DateTime fino ad oggi in Panda
Come estrarre il mese dalla data in Pandas

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *