Python Pandas에서 특정 Interval(구간)이 IntervalArray에 포함된 값들과 겹치는지 요소별(elementwise)로 확인하려면 overlaps() 메서드를 사용하면 됩니다.
overlaps() 메서드란?
두 구간이 하나라도 공통된 지점을 가지면 두 구간은 서로 겹치는 것으로 간주됩니다. 이때 닫힌(closed) 끝점이 포함됩니다. 반면, 열린(open) 끝점만 공유하는 구간은 겹치는 것으로 판단하지 않습니다.
필요한 라이브러리 임포트
먼저 pandas 라이브러리를 가져옵니다.
import pandas as pd
IntervalArray 생성
튜플 리스트를 사용하여 IntervalArray를 생성합니다.
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (15, 35)])
생성된 IntervalArray를 출력해 확인합니다.
print("IntervalArray...\n", intervals)구간 겹침 여부 확인하기
이제 overlaps() 메서드를 사용해 새로운 구간 pd.Interval(12, 30)이 IntervalArray의 각 구간과 겹치는지 요소별로 확인합니다.
print("\nDoes interval overlaps values in the IntervalArray...\n", intervals.overlaps(pd.Interval(12, 30)))전체 예제 코드
다음은 지금까지 설명한 내용을 모두 포함한 전체 코드입니다.
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)
# 구간 (12, 30)이 IntervalArray의 값들과 겹치는지 요소별로 확인
print("\nDoes interval overlaps values in the IntervalArray...\n", intervals.overlaps(pd.Interval(12, 30)))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
IntervalArray... <IntervalArray> [(10, 20], (15, 35]] Length: 2, dtype: interval[int64, right] Interval length... Int64Index([10, 20], dtype='int64') Does interval overlaps values in the IntervalArray... [ True True]
결과 해석
출력 결과를 보면 IntervalArray는 (10, 20]과 (15, 35]라는 두 개의 구간을 가지고 있으며, 각각의 길이는 10과 20입니다. 구간 (12, 30)과 비교한 결과 두 구간 모두 True가 반환되었는데, 이는 (12, 30)이 두 구간과 각각 공통된 지점을 가지고 있기 때문입니다.
이처럼 overlaps()> 메서드는 여러 구간과의 겹침 여부를 한 번에 빠르게 판별할 수 있어 시간 구간 분석이나 데이터 필터링 작업에 유용하게 활용할 수 있습니다.