Python Pandas IntervalIndex - Check if Intervals that share closed endpoints overlap

To check if intervals that share closed endpoints overlap in Pandas, use the IntervalIndex.is_overlapping property. This property returns True when intervals share endpoints and both endpoints are closed.

Understanding Interval Overlapping

When intervals are created with closed='both', adjacent intervals share endpoints. For example, intervals [0,1] and [1,2] both include the point 1, making them overlapping ?

import pandas as pd

# Create IntervalIndex with both endpoints closed
interval = pd.interval_range(0, 4, closed='both')
print("IntervalIndex with closed='both':")
print(interval)
print("\nDoes it overlap?", interval.is_overlapping)
IntervalIndex with closed='both':
IntervalIndex([[0, 1], [1, 2], [2, 3], [3, 4]], dtype='interval[int64, both]')

Does it overlap? True

Comparison with Different Closed Parameters

Let's compare how different closed parameters affect overlapping ?

import pandas as pd

# Different closed parameters
intervals_both = pd.interval_range(0, 4, closed='both')
intervals_left = pd.interval_range(0, 4, closed='left') 
intervals_right = pd.interval_range(0, 4, closed='right')
intervals_neither = pd.interval_range(0, 4, closed='neither')

print("Closed='both':", intervals_both.is_overlapping)
print("Closed='left':", intervals_left.is_overlapping)
print("Closed='right':", intervals_right.is_overlapping)
print("Closed='neither':", intervals_neither.is_overlapping)
Closed='both': True
Closed='left': False
Closed='right': False
Closed='neither': False

Example with Custom Intervals

You can also check overlapping with manually created intervals ?

import pandas as pd

# Create custom intervals that overlap
intervals = pd.IntervalIndex.from_tuples([(0, 3), (2, 5), (4, 7)], closed='both')
print("Custom intervals:")
print(intervals)
print("\nOverlapping?", intervals.is_overlapping)

# Create non-overlapping intervals
intervals_no_overlap = pd.IntervalIndex.from_tuples([(0, 1), (2, 3), (4, 5)], closed='left')
print("\nNon-overlapping intervals:")
print(intervals_no_overlap)
print("Overlapping?", intervals_no_overlap.is_overlapping)
Custom intervals:
IntervalIndex([[0, 3], [2, 5], [4, 7]], dtype='interval[int64, both]')

Overlapping? True

Non-overlapping intervals:
IntervalIndex([[0, 1), [2, 3), [4, 5)], dtype='interval[int64, left]')
Overlapping? False

Conclusion

Use IntervalIndex.is_overlapping to detect when intervals share common points. This property is particularly useful when working with time series data or range-based analysis where overlap detection is crucial.

Updated on: 2026-03-26T16:59:45+05:30

230 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements