닫힌 끝점(closed endpoint)을 공유하는 구간(Interval)들이 서로 겹치는지 확인하려면 Pandas의 IntervalArray.overlaps() 메서드를 사용하면 됩니다.
overlaps() 메서드의 동작 원리
두 구간은 공통 지점을 하나라도 공유하면 겹치는 것으로 간주되며, 이때 닫혀 있는(closed) 끝점도 포함됩니다. 반면, 열려 있는(open) 끝점에서만 만나는 경우에는 겹치지 않는 것으로 판단합니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
두 개의 구간을 담고 있는 IntervalArray를 생성합니다.
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (15, 35)])
생성된 IntervalArray를 출력해 내용을 확인합니다.
print("IntervalArray...\n", intervals)
이제 닫힌 끝점을 공유하는 구간이 겹치는지 확인합니다. closed 매개변수에 'left' 값을 지정하여 왼쪽 끝점이 닫힌 구간을 만들어 비교합니다.
print("\nDoes interval that share closed endpoints overlap or not...\n",
intervals.overlaps(pd.Interval(15, 28, closed='left')))
전체 예제 코드
import pandas as pd
# 두 구간은 닫힌 끝점을 포함해 공통 지점을 공유하면 겹치는 것으로 간주됩니다.
# IntervalArray 생성
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (15, 35)])
# IntervalArray 출력
print("IntervalArray...\n", intervals)
# 구간 길이 출력
print("\nInterval length...\n", intervals.length)
# 닫힌 끝점을 공유하는 구간이 겹치는지 확인
# closed 매개변수에 'left' 값을 지정해 왼쪽 끝점을 닫힌 상태로 설정
print("\nDoes interval that share closed endpoints overlap or not...\n",
intervals.overlaps(pd.Interval(15, 28, closed='left')))
실행 결과
IntervalArray... <IntervalArray> [(10, 20], (15, 35]] Length: 2, dtype: interval[int64, right] Interval length... Int64Index([10, 20], dtype='int64') Does interval that share closed endpoints overlap or not... [ True True]
결과 해석
실행 결과는 [True, True]로 나타납니다. 비교 대상인 pd.Interval(15, 28, closed='left')은 왼쪽 끝점인 15를 포함하는 구간입니다. 첫 번째 구간 (10, 20]과 두 번째 구간 (15, 35] 모두 지점 15를 공유하므로, 두 구간 모두 해당 구간과 겹치는 것으로 판별된 것입니다.