분할 배열(breaks 배열)로 생성한 IntervalArray의 각 구간과 특정 Interval이 겹치는지 요소별(elementwise)로 확인하려면 array.overlaps() 메서드를 사용합니다.
필요한 라이브러리 임포트
가장 먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
구간 겹침(Overlap)의 조건
두 구간(interval)은 닫힌 끝점(closed endpoint)을 포함하여 공통 지점을 하나라도 공유할 때 서로 겹친다고 판단합니다. 반대로, 열린 끝점(open endpoint)만 공유하는 경우에는 겹치지 않는 것으로 간주됩니다.
IntervalArray 생성
이제 from_breaks() 메서드를 사용하여 분할 배열로부터 새로운 IntervalArray를 생성합니다.
array = pd.arrays.IntervalArray.from_breaks([0, 1, 2, 3, 4, 5])
생성된 구간들을 화면에 출력합니다.
print("Our IntervalArray...\n", array)겹침 여부 확인
overlaps() 메서드에 비교 대상 Interval을 전달하여 각 구간과의 겹침 여부를 확인합니다.
print("\nDoes the Interval overlaps the values in the IntervalArray", array.overlaps(pd.Interval(2.5, 3.2)))전체 예제 코드
다음은 지금까지의 내용을 정리한 전체 코드입니다.
import pandas as pd
# 두 구간은 닫힌 끝점을 포함해 공통 지점을 공유하면 겹칩니다.
# 열린 끝점만 공유하는 구간은 겹치지 않습니다.
# 분할 배열로 새로운 IntervalArray 생성
array = pd.arrays.IntervalArray.from_breaks([0, 1, 2, 3, 4, 5])
# IntervalArray 출력
print("Our IntervalArray...\n", array)
# 겹침 여부 확인
print("\nDoes the Interval overlaps the values in the IntervalArray", array.overlaps(pd.Interval(2.5, 3.2)))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Our IntervalArray... <IntervalArray> [(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]] Length: 5, dtype: interval[int64, right] Does the Interval overlaps the values in the IntervalArray [False False True True False]
결과 해석
출력 결과를 보면 Boolean 배열인 [False False True True False]가 반환되었습니다. 이는 입력한 Interval(2.5, 3.2]가 세 번째 구간인 (2, 3]과 네 번째 구간인 (3, 4]와 겹친다는 의미입니다. 나머지 구간인 (0, 1], (1, 2], (4, 5]와는 공통 지점이 없으므로 False가 반환된 것입니다. 이처럼 overlaps() 메서드는 IntervalArray의 각 구간에 대해 한 번에 겹침 여부를 벡터화된 방식으로 빠르게 판별할 수 있는 유용한 도구입니다.