ENH: Allow period_range to accept freq with mult != 1 · Issue #7811 · pandas-dev/pandas (original) (raw)

date_range can accept freq with mult != 1 and output DatetimeIndex, otherwise period_range raises ValueError.

pd.date_range('2014-01-01 09:00', '2014-01-01 20:00', freq='4H')
# <class 'pandas.tseries.index.DatetimeIndex'>
# [2014-01-01 09:00:00, ..., 2014-01-01 21:00:00]
# Length: 4, Freq: 4H, Timezone: None

pd.date_range('2014-01-01 20:00', '2014-01-01 09:00', freq='-1H')
# <class 'pandas.tseries.index.DatetimeIndex'>
# [2014-01-01 20:00:00, ..., 2014-01-01 09:00:00]
# Length: 12, Freq: -1H, Timezone: None

pd.period_range('2014-01-01 09:00', '2014-01-01 20:00', freq='4H')
# ValueError: Only mult == 1 supported

Is it reasonable to accept period_range and PeriodIndex.__new__ to this kind of freq? What I want to do is creating skipped or reversed ordered PeriodIndex easily.
(Considering internal representation of PeriodIndex, it looks better to result have normal freq, not to add numberized-freq like 4H).

Expected

pd.period_range('2014-01-01 09:00', '2014-01-01 20:00', freq='4H')
# <class 'pandas.tseries.period.PeriodIndex'>
# [2014-01-01 09:00:00, ..., 2014-01-01 21:00:00]
# Length: 4, Freq: H

pd.period_range('2014-01-01 20:00', '2014-01-01 09:00', freq='-1H')
# <class 'pandas.tseries.period.PeriodIndex'>
# [2014-01-01 20:00:00, ..., 2014-01-01 09:00:00]
# Length: 12, Freq: H