我用15分钟的频率创建了一个熊猫的日期范围,我想在一天中获得15分钟的索引。例如,我得到以下日期时间:
2019-01-01 00:00
2019-01-01 00:15
2019-01-01 00:30
...
2019-01-02 00:00
2019-01-02 00:15
和大熊猫一起
time_range = pd.date_range('2019-01-01 00:00', '2019-01-31 24:00', freq='15min')
我想获得一天中15分钟的索引如下:
2019-01-01 00:00 0
2019-01-01 00:15 1
2019-01-01 00:30 2
...
2019-01-02 00:00 0
2019-01-02 00:15 1
我知道我可以使用以下代码获得一天的时间:
feature_values = time_range.hour
但是我不知道如何获取分钟索引。
答案 0 :(得分:1)
IIUC,您想继续计数并在新的一天到来时重新启动,如下所示:
time_range = pd.date_range(pd.to_datetime('2019-01-01 00:00'), pd.to_datetime('2019-02-01 00:00'), freq='15Min')
s = pd.Series(index=time_range)
print(s.groupby(s.index.day).cumcount())
输出:
2019-01-01 00:00:00 0
2019-01-01 00:15:00 1
2019-01-01 00:30:00 2
2019-01-01 00:45:00 3
2019-01-01 01:00:00 4
2019-01-01 01:15:00 5
2019-01-01 01:30:00 6
2019-01-01 01:45:00 7
2019-01-01 02:00:00 8
2019-01-01 02:15:00 9
2019-01-01 02:30:00 10
2019-01-01 02:45:00 11
2019-01-01 03:00:00 12
2019-01-01 03:15:00 13
2019-01-01 03:30:00 14
2019-01-01 03:45:00 15
2019-01-01 04:00:00 16
2019-01-01 04:15:00 17
2019-01-01 04:30:00 18
2019-01-01 04:45:00 19
2019-01-01 05:00:00 20
2019-01-01 05:15:00 21
2019-01-01 05:30:00 22
2019-01-01 05:45:00 23
2019-01-01 06:00:00 24
2019-01-01 06:15:00 25
2019-01-01 06:30:00 26
2019-01-01 06:45:00 27
2019-01-01 07:00:00 28
2019-01-01 07:15:00 29
..
2019-01-31 16:45:00 67
2019-01-31 17:00:00 68
2019-01-31 17:15:00 69
2019-01-31 17:30:00 70
2019-01-31 17:45:00 71
2019-01-31 18:00:00 72
2019-01-31 18:15:00 73
2019-01-31 18:30:00 74
2019-01-31 18:45:00 75
2019-01-31 19:00:00 76
2019-01-31 19:15:00 77
2019-01-31 19:30:00 78
2019-01-31 19:45:00 79
2019-01-31 20:00:00 80
2019-01-31 20:15:00 81
2019-01-31 20:30:00 82
2019-01-31 20:45:00 83
2019-01-31 21:00:00 84
2019-01-31 21:15:00 85
2019-01-31 21:30:00 86
2019-01-31 21:45:00 87
2019-01-31 22:00:00 88
2019-01-31 22:15:00 89
2019-01-31 22:30:00 90
2019-01-31 22:45:00 91
2019-01-31 23:00:00 92
2019-01-31 23:15:00 93
2019-01-31 23:30:00 94
2019-01-31 23:45:00 95
2019-02-01 00:00:00 96
Freq: 15T, dtype: int64
P.S。我也在显示time_range
的第一行,因为我在那里做了一些更改(例如,将字符串更改为datetime
)
答案 1 :(得分:1)
您可以计算每天的累积分钟数,然后将其除以15:
quarters = (time_range.minute + 60 * time_range.hour) // 15
答案 2 :(得分:0)
您有date_range.minute
:
dt = pd.date_range(start='1/1/2018', end='1/08/2018', freq='15min')
mask = dt[dt.minute==15]
# get index
idx = dt.get_indexer(mask)