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