Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Pandas IntervalArray - ตรวจสอบช่วงที่มีปลายทางเปิดร่วมกันว่าทับซ้อนหรือไม่

บทนำ

ใช้เมธอด overlaps() เพื่อตรวจสอบว่า IntervalArray แต่ละช่วงทับซ้อนกับช่วงที่กำหนดหรือไม่ โดยพิจารณาจากปลายทางเปิด/ปิด

ขั้นตอน

1. นำเข้าไลบรารีและสร้าง IntervalArray

import pandas as pd
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (20, 35)])

ค่าเริ่มต้น: ปิดขวา (right-closed) → (10, 20], (20, 35]

2. ตรวจสอบการทับซ้อนกับช่วง (20, 25] ปิดขวา

print("\nDoes interval that that only have an open endpoint overlap or not...\n",
      intervals.overlaps(pd.Interval(20, 25, closed='right')))

ตัวอย่างโค้ดเต็ม

import pandas as pd

intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (20, 35)])

print("IntervalArray...\n", intervals)
print("\nInterval length...\n", intervals.length)
print("\nDoes interval that that only have an open endpoint overlap or not...\n",
      intervals.overlaps(pd.Interval(20, 25, closed='right')))

ผลลัพธ์

IntervalArray...

[(10, 20], (20, 35]]
Length: 2, dtype: interval[int64, right]

Interval length...
Int64Index([10, 15], dtype='int64')

Does interval that that only have an open endpoint overlap or not...
[False True]

คำอธิบาย

  • ช่วงที่ 1: (10, 20] ไม่รวม 20 (ปลายขวาปิด แต่ช่วงที่ตรวจสอบเริ่มที่ 20)
  • ช่วงที่ 2: (20, 35] รวม 20 → ทับซ้อนกับ (20, 25] ที่ 20
  • ผลลัพธ์: [False, True] — ช่วงแรกไม่ทับซ้อน, ช่วงที่สองทับซ้อน
  • ปลายทางเปิด (open endpoint) ไม่ถือว่าทับซ้อนกัน