หากต้องการสร้าง PeriodIndex และดึงจำนวนวันในแต่ละเดือน สามารถใช้ pandas.PeriodIndex() สร้างออบเจ็กต์ แล้วใช้คุณสมบัติ PeriodIndex.daysinmonth
ขั้นตอนการทำงาน
1. นำเข้าไลบรารีที่จำเป็น
import pandas as pd
2. สร้างออบเจ็กต์ PeriodIndex ด้วยความถี่เป็นวัน
periodIndex = pd.PeriodIndex(
['2018-07-25', '2019-10-30', '2020-11-20',
'2021-09-15', '2022-03-12', '2023-06-18'],
freq="D"
)
3. แสดง PeriodIndex
print("PeriodIndex...\n", periodIndex)
4. ดึงจำนวนวันในเดือนของแต่ละช่วงเวลา
print("\nจำนวนวันในเดือนจาก PeriodIndex...\n", periodIndex.daysinmonth)
ตัวอย่างโค้ดสมบูรณ์
import pandas as pd
# สร้าง PeriodIndex object
# PeriodIndex เป็น immutable ndarray ที่เก็บค่าลำดับบ่งชี้ช่วงเวลาสม่ำเสมอ
# เราตั้งความถี่ด้วยพารามิเตอร์ "freq"
periodIndex = pd.PeriodIndex(
['2018-07-25', '2019-10-30', '2020-11-20',
'2021-09-15', '2022-03-12', '2023-06-18'],
freq="D"
)
# แสดง PeriodIndex object
print("PeriodIndex...\n", periodIndex)
# แสดง PeriodIndex frequency
print("\nPeriodIndex frequency...\n", periodIndex.freq)
# แสดงหมายเลขเดือน (1=ม.ค., 2=ก.พ. ... 12=ธ.ค.)
print("\nMonth number...\n", periodIndex.month)
# แสดงจำนวนวันในเดือนจาก PeriodIndex object
print("\nจำนวนวันในเดือนจาก PeriodIndex...\n", periodIndex.daysinmonth)
ผลลัพธ์ที่คาดหวัง
PeriodIndex... PeriodIndex(['2018-07-25', '2019-10-30', '2020-11-20', '2021-09-15', '2022-03-12', '2023-06-18'], dtype='period[D]')
PeriodIndex frequency... <Day>
Month number... Int64Index([7, 10, 11, 9, 3, 6], dtype='int64')
จำนวนวันในเดือนจาก PeriodIndex... Int64Index([31, 31, 30, 30, 31, 30], dtype='int64')
คำอธิบาย: ค่าที่ได้ [31, 31, 30, 30, 31, 30] ตรงกับจำนวนวันในเดือนกรกฎาคม, ตุลาคม, พฤศจิกายน, กันยายน, มีนาคม, มิถุนายน ตามลำดับ (ปี 2020 เป็นปีอธิกสุรทินแต่นובמברมี 30 วันอยู่แล้ว)