pandas.period_range(start=None, end=None, periods=None, freq='D', name=None)[source]

Return a fixed frequency PeriodIndex, with day (calendar) as the default frequency


start : string or period-like, default None

Left bound for generating periods

end : string or period-like, default None

Right bound for generating periods

periods : integer, default None

Number of periods to generate

freq : string or DateOffset, default ‘D’ (calendar daily)

Frequency alias

name : string, default None

Name of the resulting PeriodIndex


prng : PeriodIndex


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

To learn more about the frequency strings, please see this link.


>>> pd.period_range(start='2017-01-01', end='2018-01-01', freq='M')
PeriodIndex(['2017-01', '2017-02', '2017-03', '2017-04', '2017-05',
             '2017-06', '2017-06', '2017-07', '2017-08', '2017-09',
             '2017-10', '2017-11', '2017-12', '2018-01'],
            dtype='period[M]', freq='M')

If start or end are Period objects, they will be used as anchor endpoints for a PeriodIndex with frequency matching that of the period_range constructor.

>>> pd.period_range(start=pd.Period('2017Q1', freq='Q'),
...                 end=pd.Period('2017Q2', freq='Q'), freq='M')
PeriodIndex(['2017-03', '2017-04', '2017-05', '2017-06'],
            dtype='period[M]', freq='M')
Scroll To Top