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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *