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")
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?
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')
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")
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?
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')