Разделите временной индекс панд на смежные группы с разной временной разницей - PullRequest
1 голос
/ 27 июня 2019

Я хочу разбить временной индекс на группы, где порог регулируется.Как:

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

Но я чувствую, что должен быть более элегантный или эффективный способ сделать это.Есть ли способ, которым я могу сделать это исключительно с пандами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...