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

Return a fixed frequency IntervalIndex


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 : integer, default None

Number of periods to generate

freq : numeric, string, 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’ (calendar daily) for datetime-like.

name : string, default None

Name of the resulting IntervalIndex

closed : string, default ‘right’

options are: ‘left’, ‘right’, ‘both’, ‘neither’


rng : IntervalIndex

See also

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


Of the three parameters: start, end, and periods, exactly two must be specified.


Numeric start and end is supported.

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

Additionally, datetime-like input is also supported.

>>> pd.interval_range(start=pd.Timestamp('2017-01-01'),
IntervalIndex([(2017-01-01, 2017-01-02], (2017-01-02, 2017-01-03],
               (2017-01-03, 2017-01-04]]
              closed='right', dtype='interval[datetime64[ns]]')

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]]
              closed='right', dtype='interval[float64]')

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, 2017-02-01], (2017-02-01, 2017-03-01],
               (2017-03-01, 2017-04-01]]
              closed='right', dtype='interval[datetime64[ns]]')

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]]
              closed='both', dtype='interval[int64]')
Scroll To Top