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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *