Pandas에서 두 개의 Interval(구간) 객체가 닫힌(closed) 끝점을 공유하면서 서로 겹치는지 확인하려면 overlaps() 메서드를 사용하면 됩니다.
1. 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
2. 구간 겹침의 기본 원리
두 구간이 하나라도 공통된 지점을 가지면, 그 지점이 닫힌 끝점인 경우 두 구간은 겹치는 것으로 간주됩니다. 반면, 공통으로 공유하는 끝점이 열린(open) 끝점뿐이라면 두 구간은 겹치지 않습니다.
3. Interval 객체 생성
양쪽 모두에서 닫힌(closed) 두 개의 Interval 객체를 생성해 보겠습니다. closed 매개변수에 'both' 값을 지정하면 시작점과 끝점이 모두 포함되는 구간이 됩니다.
interval1 = pd.Interval(10, 30, closed='both') interval2 = pd.Interval(30, 50, closed='both')
여기서 두 구간은 끝점 30을 공유합니다. 이 끝점은 닫혀 있으므로 두 구간은 겹침으로 판단될 것입니다.
4. 구간 출력하기
생성한 두 구간 객체를 화면에 출력합니다.
print("Interval1...\n", interval1)
print("Interval2...\n", interval2)5. 겹침 여부 확인
overlaps() 메서드를 호출하여 두 Interval 객체가 겹치는지 확인합니다.
print("\n두 구간 객체가 겹치나요?\n", interval1.overlaps(interval2))전체 예제 코드
아래는 위 과정을 모두 포함한 완성된 코드입니다.
import pandas as pd
# 두 구간이 닫힌 끝점을 포함한 공통 지점을 공유하면 겹치는 것으로 간주됩니다.
# 열린 끝점만 공유하는 경우에는 겹치지 않습니다.
# 양쪽이 모두 닫힌(closed='both') 두 개의 Interval 객체 생성
interval1 = pd.Interval(10, 30, closed='both')
interval2 = pd.Interval(30, 50, closed='both')
# 구간 정보 출력
print("Interval1...\n", interval1)
print("Interval2...\n", interval2)
# 두 객체의 길이(length) 출력
print("\nInterval1 객체의 길이 = ", interval1.length)
print("\nInterval2 객체의 길이 = ", interval2.length)
# 두 구간 객체가 겹치는지 확인
print("\n두 구간 객체가 겹치나요?\n", interval1.overlaps(interval2))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Interval1... [10, 30] Interval2... [30, 50] Interval1 객체의 길이 = 20 Interval2 객체의 길이 = 20 두 구간 객체가 겹치나요? True
정리
출력 결과에서 볼 수 있듯이, 두 구간은 [10, 30]과 [30, 50]으로 끝점 30을 공유하며, 이 끝점이 양쪽 모두에서 닫혀 있기 때문에 overlaps() 메서드는 True를 반환합니다. 만약 closed='left' 또는 closed='right'처럼 한쪽만 닫힌 설정이라도 공유 끝점이 닫힌 쪽에 속하면 겹침으로 판단되지만, 해당 끝점이 양쪽에서 모두 열려 있다면 결과는 False가 됩니다.