Create hourly/minutely time range using pandas

Question:

Is there a way to generate time range in pandas similar to date_range?
Something like:

pandas.time_range("11:00", "21:30", freq="30min")
Asked By: UNagaswamy

||

Answers:

A time range doesn’t exist as a standalone index type. Generate using a single date

In [1]: pandas.date_range("11:00", "21:30", freq="30min")
Out[1]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-07-14 11:00:00, ..., 2013-07-14 21:30:00]
Length: 22, Freq: 30T, Timezone: None

The time objects

In [2]: pandas.date_range("11:00", "21:30", freq="30min").time
Out[2]: 
array([datetime.time(11, 0), datetime.time(11, 30), datetime.time(12, 0),
       datetime.time(12, 30), datetime.time(13, 0), datetime.time(13, 30),
       datetime.time(14, 0), datetime.time(14, 30), datetime.time(15, 0),
       datetime.time(15, 30), datetime.time(16, 0), datetime.time(16, 30),
       datetime.time(17, 0), datetime.time(17, 30), datetime.time(18, 0),
       datetime.time(18, 30), datetime.time(19, 0), datetime.time(19, 30),
       datetime.time(20, 0), datetime.time(20, 30), datetime.time(21, 0),
       datetime.time(21, 30)], dtype=object)

You can also resample if you are spanning multiple dates.

What are you trying to do?

Answered By: Jeff

You might also be looking for pd.timedelta_range():

pd.timedelta_range("11:00:00", "21:30:00", freq="30min")

TimedeltaIndex(['0 days 11:00:00', '0 days 11:30:00', '0 days 12:00:00',
                '0 days 12:30:00', '0 days 13:00:00', '0 days 13:30:00',
                '0 days 14:00:00', '0 days 14:30:00', '0 days 15:00:00',
                '0 days 15:30:00', '0 days 16:00:00', '0 days 16:30:00',
                '0 days 17:00:00', '0 days 17:30:00', '0 days 18:00:00',
                '0 days 18:30:00', '0 days 19:00:00', '0 days 19:30:00',
                '0 days 20:00:00', '0 days 20:30:00', '0 days 21:00:00',
                '0 days 21:30:00'],
               dtype='timedelta64[ns]', freq='30T')
Answered By: cottontail
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.