Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Pandas IntervalArray - Kiểm tra khoảng chia sẻ endpoint đóng có overlap không

Để 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 IntervalArrayKhoảng kiểm traGiao nhauOverlap
(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ố closed của khoảng kiểm tra quyết định endpoint có tính là điểm chung.