每天使用熊猫获取10分钟的索引

时间:2019-05-05 01:56:43

标签: python pandas datetime

我用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

但是我不知道如何获取分钟索引。

3 个答案:

答案 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)