Я хочу разбить временной индекс на группы, где порог регулируется.Как:
ind = pd.Index(pd.to_datetime(['00:01', '00:02', '00:03',
'00:24', '00:26', '00:28',
'00:42', '00:45', '00:48']))
def splitter(index_, freq):
sections_ = np.where(pd.Series(index_).diff(1) > pd.Timedelta(freq))[0]
df = pd.DataFrame(np.array_split(index_, sections_))
return df
Кажется, это работает:
splitter(ind, '1min')
Out[524]:
0 1 2
0 2019-06-27 00:01:00 2019-06-27 00:02:00 2019-06-27 00:03:00
1 2019-06-27 00:24:00 NaT NaT
2 2019-06-27 00:26:00 NaT NaT
3 2019-06-27 00:28:00 NaT NaT
4 2019-06-27 00:42:00 NaT NaT
5 2019-06-27 00:45:00 NaT NaT
6 2019-06-27 00:48:00 NaT NaT
splitter(ind, '3min')
Out[525]:
0 1 2
0 2019-06-27 00:01:00 2019-06-27 00:02:00 2019-06-27 00:03:00
1 2019-06-27 00:24:00 2019-06-27 00:26:00 2019-06-27 00:28:00
2 2019-06-27 00:42:00 2019-06-27 00:45:00 2019-06-27 00:48:00
Но я чувствую, что должен быть более элегантный или эффективный способ сделать это.Есть ли способ, которым я могу сделать это исключительно с пандами?