Pandy: uzyskaj dni robocze między datą początkową a końcową
Aby uzyskać dni robocze w pandach, możesz użyć następujących metod:
Metoda 1: Uzyskaj dni robocze (z wyłączeniem wszystkich weekendów)
business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')
Metoda 2: Uzyskaj dni robocze (z wyłączeniem wszystkich weekendów i świąt federalnych)
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)
Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce.
Przykład 1: Uzyskaj dni robocze (z wyłączeniem wszystkich weekendów)
Jednym ze sposobów uzyskania listy dni roboczych pomiędzy dwiema datami w pandach jest użycie funkcji bdate_range() .
Należy pamiętać, że ta funkcja po prostu zlicza liczbę dni między datą początkową a datą końcową, z wyłączeniem weekendów.
Na przykład możemy użyć następującej składni, aby policzyć liczbę dni roboczych między 1.01.2022 a 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
Obiekt o nazwie business_days zawiera każdy dzień roboczy pomiędzy określoną datą początkową i końcową.
Korzystając z funkcji len() widzimy, że całkowita liczba dni roboczych pomiędzy określoną datą początkową i końcową wynosi 260 .
Przykład 2: Uzyskaj dni robocze (z wyłączeniem wszystkich weekendów i świąt federalnych)
Aby uzyskać listę dni roboczych pomiędzy dwiema datami w pandach, która wyklucza zarówno weekendy, jak i święta federalne, musimy skorzystać z funkcji modułu pandas tseries .
Na przykład możemy użyć następującej składni, aby policzyć liczbę dni roboczych (wszystkie dni z wyjątkiem weekendów i świąt) między 1.01.2022 a 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
Obiekt o nazwie us_business_days zawiera wszystkie dni robocze (wszystkie dni z wyjątkiem weekendów i świąt) pomiędzy określoną datą początkową i końcową.
Korzystając z funkcji len() widzimy, że całkowita liczba dni roboczych pomiędzy określoną datą początkową i końcową wynosi 250 .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:
Jak dodawać i odejmować dni od daty w Pandach
Jak przekonwertować DateTime na datę w Pandach
Jak wyodrębnić miesiąc z daty w Pandach