Skip to main content
`Ctrl`+`K`

# pandas.interval_range

pandas.interval_range(start=None, end=None, periods=None, freq=None, name=None, closed='right')

  Return a fixed frequency IntervalIndex.

  This function generates a sequence of evenly spaced intervals over a specified range, supporting numeric, datetime-like, and timedelta endpoints.

  Parameters:
    start numeric or datetime-like, default None

      Left bound for generating intervals.

    end numeric or datetime-like, default None

      Right bound for generating intervals.

    periods int, default None

      Number of periods to generate.

    freq numeric, str, Timedelta, datetime.timedelta, or DateOffset, default None

      The length of each interval. Must be consistent with the type of start and end, e.g. 2 for numeric, or ‘5H’ for datetime-like. Default is 1 for numeric and ‘D’ for datetime-like.

    name str, default None

      Name of the resulting IntervalIndex.

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

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

  Returns:
    IntervalIndex

      Object with a fixed frequency.

  See also

  `IntervalIndex`

    An Index of intervals that are all closed on the same side.

  Notes

  Of the four parameters `start`, `end`, `periods`, and `freq`, exactly three must be specified. If `freq` is omitted, the resulting `IntervalIndex` will have `periods` linearly spaced elements between `start` and `end`, inclusively.

  To learn more about datetime-like frequency strings, please see this link.

  Examples

  Numeric `start` and `end` is supported.

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

  Additionally, datetime-like input is also supported.

      >>> pd.interval_range(
      ...     start=pd.Timestamp("2017-01-01"), end=pd.Timestamp("2017-01-04")
      ... )
      IntervalIndex([(2017-01-01 00:00:00, 2017-01-02 00:00:00],
                     (2017-01-02 00:00:00, 2017-01-03 00:00:00],
                     (2017-01-03 00:00:00, 2017-01-04 00:00:00]],
                    dtype='interval[datetime64[us], right]')

  The `freq` parameter specifies the frequency between the left and right. endpoints of the individual intervals within the `IntervalIndex`. For numeric `start` and `end`, the frequency must also be numeric.

      >>> pd.interval_range(start=0, periods=4, freq=1.5)
      IntervalIndex([(0.0, 1.5], (1.5, 3.0], (3.0, 4.5], (4.5, 6.0]],
                    dtype='interval[float64, right]')

  Similarly, for datetime-like `start` and `end`, the frequency must be convertible to a DateOffset.

      >>> pd.interval_range(start=pd.Timestamp("2017-01-01"), periods=3, freq="MS")
      IntervalIndex([(2017-01-01 00:00:00, 2017-02-01 00:00:00],
                     (2017-02-01 00:00:00, 2017-03-01 00:00:00],
                     (2017-03-01 00:00:00, 2017-04-01 00:00:00]],
                    dtype='interval[datetime64[us], right]')

  Specify `start`, `end`, and `periods`; the frequency is generated automatically (linearly spaced).

      >>> pd.interval_range(start=0, end=6, periods=4)
      IntervalIndex([(0.0, 1.5], (1.5, 3.0], (3.0, 4.5], (4.5, 6.0]],
                dtype='interval[float64, right]')

  The `closed` parameter specifies which endpoints of the individual intervals within the `IntervalIndex` are closed.

      >>> pd.interval_range(end=5, periods=4, closed="both")
      IntervalIndex([[1, 2], [2, 3], [3, 4], [4, 5]],
                    dtype='interval[int64, both]')