Để kiểm tra các khoảng (intervals) chia sẻ endpoint đóng (closed endpoint) có overlap hay không, chúng ta dùng phương thức IntervalArray.overlaps().
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo IntervalArray có overlap rõ rệt
Hai khoảng: (10, 20] và (15, 35] - overlap từ 15 đến 20.
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (15, 35)])
3. Kiểm tra overlap với khoảng đóng trái
print("\nKhoảng chia sẻ endpoint đóng có overlap?\n", intervals.overlaps(pd.Interval(15, 28, closed='left')))
Ví dụ hoàn chỉnh
import pandas as pd
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (15, 35)])
print("IntervalArray:\n", intervals)
print("\nĐộ dài khoảng:\n", intervals.length)
# Kiểm tra overlap với (15, 28] - closed left
print("\nOverlap với (15, 28] closed='left':\n", intervals.overlaps(pd.Interval(15, 28, closed='left')))
Kết quả đầu ra
IntervalArray:[(10, 20], (15, 35]] Length: 2, dtype: interval[int64, right] Độ dài khoảng: Int64Index([10, 20], dtype='int64') Khoảng chia sẻ endpoint đóng có overlap: [True True]
Giải thích
Khoảng kiểm tra: pd.Interval(15, 28, closed='left') = [15, 28).
| Khoảng IntervalArray | Khoảng kiểm tra | Giao nhau | Overlap |
|---|---|---|---|
| (10, 20] = (10, 20] | [15, 28) | [15, 20] | True |
| (15, 35] = (15, 35] | [15, 28) | [15, 28) | True |
Cả hai đều overlap vì có đoạn chung không rỗng. Endpoint 15: khoảng 1 mở trái (không chứa 15), khoảng kiểm tra đóng trái (chứa 15) → vẫn overlap vì khoảng 1 chứa (15, 20].
Tóm tắt quy tắc overlaps()
- Trả về boolean array cùng độ dài IntervalArray.
- Overlap = tồn tại ít nhất 1 điểm thuộc cả hai khoảng.
- Endpoint đóng = điểm thuộc khoảng; Endpoint mở = điểm không thuộc.
- Tham số
closedcủa khoảng kiểm tra quyết định endpoint có tính là điểm chung.