Pandas: รับวันทำการระหว่างวันที่เริ่มต้นและวันที่สิ้นสุด
คุณสามารถใช้วิธีต่อไปนี้เพื่อรับวันทำงานในแพนด้า:
วิธีที่ 1: รับวันทำการ (ไม่รวมวันหยุดสุดสัปดาห์ทั้งหมด)
business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')
วิธีที่ 2: รับวันทำการ (ไม่รวมวันหยุดสุดสัปดาห์ และ วันหยุดราชการ)
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)
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ
ตัวอย่างที่ 1: รับวันทำการ (ไม่รวมวันหยุดสุดสัปดาห์ทั้งหมด)
วิธีหนึ่งในการรับรายการวันทำการระหว่างวันที่สองวันในรูปแบบแพนด้าคือการใช้ฟังก์ชัน bdate_range()
โปรดทราบว่าฟังก์ชันนี้จะนับจำนวนวันระหว่างวันที่เริ่มต้นและวันที่สิ้นสุด ไม่รวมวันหยุดสุดสัปดาห์
ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อนับจำนวนวันทำการระหว่างวันที่ 1/1/2022 ถึง 12/31/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
ออบเจ็กต์ที่เรียกว่า business_days ประกอบด้วยวันทำการระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดที่ระบุ
และเมื่อใช้ฟังก์ชัน len() เราจะเห็นว่าจำนวนวันทำการทั้งหมดระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดที่ระบุคือ 260
ตัวอย่างที่ 2: รับวันทำการ (ไม่รวมวันหยุดสุดสัปดาห์ และ วันหยุดราชการ)
หากต้องการรับรายการวันทำการระหว่างวันที่สองวันในแพนด้าที่ไม่รวมทั้งวันหยุดสุดสัปดาห์และวันหยุดราชการ เราจำเป็นต้องใช้ฟังก์ชันโมดูล pandas tseries
ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อนับจำนวนวันทำการ (ทุกวันไม่รวมวันหยุดสุดสัปดาห์และวันหยุด) ระหว่าง 1/1/2022 ถึง 12/31/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
ออบเจ็กต์ที่เรียกว่า us_business_days ประกอบด้วยวันทำการทั้งหมด (ทุกวันยกเว้นวันหยุดสุดสัปดาห์และวันหยุด) ระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดที่ระบุ
และเมื่อใช้ฟังก์ชัน len() เราจะเห็นว่าจำนวนวันทำการทั้งหมดระหว่างวันที่เริ่มต้นและวันที่สิ้นสุดที่ระบุคือ 250
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:
วิธีบวกและลบวันจากวันที่ใน Pandas
วิธีแปลง DateTime เป็นวันที่ใน Pandas
วิธีแยกเดือนจากวันที่ใน Pandas