Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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.
