Получение индекса 10 минут за один день с использованием панд - PullRequest
1 голос
/ 05 мая 2019

Я создаю диапазон дат пандами с частотой 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 ]

1 голос
/ 05 мая 2019

Вы можете вычислить совокупное количество минут в день и разделить его на 15:

quarters = (time_range.minute + 60 * time_range.hour) // 15
1 голос
/ 05 мая 2019

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

PS Я показываю первыйтакже строка time_range, потому что я там внес некоторые изменения (например, изменив строки на datetime)

0 голосов
/ 05 мая 2019

У вас есть 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...