Skip to main content
`Ctrl`+`K`

# pandas.IntervalIndex

class pandas.IntervalIndex(data, closed=None, dtype=None, copy=None, name=None, verify_integrity=True)

  Immutable index of intervals that are closed on the same side.

  An `IntervalIndex` stores an array of `Interval` objects, all sharing the same `closed` value, enabling vectorized operations such as overlap checks, containment tests, and set-like comparisons on intervals. It is commonly produced by `cut()`, `qcut()`, or `interval_range()`.

  Parameters:
    data array-like (1-dimensional)

      Array-like (ndarray, `DateTimeArray`, `TimeDeltaArray`) containing Interval objects from which to build the IntervalIndex.

    closed{‘left’, ‘right’, ‘both’, ‘neither’}, default ‘right’

      Whether the intervals are closed on the left-side, right-side, both or neither.

    dtype dtype or None, default None

      If None, dtype will be inferred.

    copy bool, default None

      Whether to copy input data, only relevant for array, Series, and Index inputs (for other input, e.g. a list, a new array is created anyway). Defaults to True for array input and False for Index/Series. Set to False to avoid copying array input at your own risk (if you know the input data won’t be modified elsewhere). Set to True to force copying Series/Index input up front.

    name object, optional

      Name to be stored in the index.

    verify_integrity bool, default True

      Verify that the IntervalIndex is valid.

  Attributes

  `left` | Return left bounds of the intervals in the IntervalIndex.
  `right` | Return right bounds of the intervals in the IntervalIndex.
  `closed` | String describing the inclusive side the intervals.
  `mid` | Return the midpoint of each interval in the IntervalIndex as an Index.
  `length` | Calculate the length of each interval in the IntervalIndex.
  `is_empty` | Indicates if an interval is empty, meaning it contains no points.
  `is_non_overlapping_monotonic` | Return a boolean whether the IntervalArray/IntervalIndex is non-overlapping and monotonic.
  `is_overlapping` | Return True if the IntervalIndex has overlapping intervals, else False.
  `values` | Return an array representing the data in the Index.

  Methods

  `from_arrays`(left, right[, closed, name, ...]) | Construct from two arrays defining the left and right bounds.
  `from_tuples`(data[, closed, name, copy, dtype]) | Construct an IntervalIndex from an array-like of tuples.
  `from_breaks`(breaks[, closed, name, copy, dtype]) | Construct an IntervalIndex from an array of splits.
  `contains`(other) | Check elementwise if the Intervals contain the value.
  `overlaps`(other) | Check elementwise if an Interval overlaps the values in the IntervalArray.
  `set_closed`(closed) | Return an identical IntervalArray closed on the specified side.
  `to_tuples`([na_tuple]) | Return an ndarray (if self is IntervalArray) or Index (if self is IntervalIndex) of tuples of the form (left, right).

  See also

  `Index`

    The base pandas Index type.

  `Interval`

    A bounded slice-like interval; the elements of an IntervalIndex.

  `interval_range`

    Function to create a fixed frequency IntervalIndex.

  `cut`

    Bin values into discrete Intervals.

  `qcut`

    Bin values into equal-sized Intervals based on rank or sample quantiles.

  Notes

  See the user guide for more.

  Examples

  A new `IntervalIndex` is typically constructed using `interval_range()`:

      >>> pd.interval_range(start=0, end=5)
      IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]],
                    dtype='interval[int64, right]')

  It may also be constructed using one of the constructor methods: `IntervalIndex.from_arrays()`, `IntervalIndex.from_breaks()`, and `IntervalIndex.from_tuples()`.

  See further examples in the doc strings of `interval_range` and the mentioned constructor methods.