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

Python Pandas: Kiểm tra hai Interval object có endpoint đóng chồng lấp nhau

Phương thức overlaps() trong Pandas kiểm tra xem hai đối tượng Interval có chồng lấp (overlap) nhau hay không. Hai interval chồng lấp nếu chúng chia sẻ một điểm chung, bao gồm cả endpoint đóng (closed endpoints).

Các bước thực hiện

1. Import thư viện

import pandas as pd

2. Tạo hai Interval object đóng cả hai đầu

Sử dụng tham số closed='both' để interval bao gồm cả endpoint trái và phải:

interval1 = pd.Interval(10, 30, closed='both')
interval2 = pd.Interval(30, 50, closed='both')

3. Hiển thị các interval

print("Interval1...\n", interval1)
print("Interval2...\n", interval2)

4. Kiểm tra chồng lấp

print("\nCả hai interval có chồng lấp?\n", interval1.overlaps(interval2))

Ví dụ hoàn chỉnh

import pandas as pd

# Tạo hai interval đóng cả hai đầu
interval1 = pd.Interval(10, 30, closed='both')
interval2 = pd.Interval(30, 50, closed='both')

print("Interval1...\n", interval1)
print("Interval2...\n", interval2)
print("\nĐộ dài Interval1 = ", interval1.length)
print("\nĐộ dài Interval2 = ", interval2.length)
print("\nCả hai interval có chồng lấp?\n", interval1.overlaps(interval2))

Kết quả đầu ra

Interval1...
[10, 30]
Interval2...
[30, 50]
Độ dài Interval1 = 20
Độ dài Interval2 = 20
Cả hai interval có chồng lấp?
True

Giải thích:

  • [10, 30] và [30, 50] đều đóng (closed='both')
  • Chúng chia sẻ điểm 30 → chồng lấp = True
  • Nếu một trong hai là open tại 30, kết quả sẽ là False

Quy tắc chồng lấp (Overlap Rules)

Interval 1 Interval 2 Chồng lấp?
[10, 30] [30, 50] True (chung điểm 30)
[10, 30) [30, 50] False (10-30 không bao gồm 30)
(10, 30] (30, 50] False (không chung điểm nào)
[10, 30] [25, 40] True (chung đoạn 25-30)