根据顺序数据切片数据框

Slice a dataframe based on sequential data

我有一个数据框如下:

data = pd.DataFrame({'time':['8:10:15','8:15:12','8:35:51','9:01:04','9:14:11','9:55:20','10:10:00','10:35:25','11:17:02','11:45:26'
                         ,'12:02:17','12:12:03','12:35:15','13:15:00','13:25:24','13:49:52','14:00:02','14:07:23','14:25:30'],
                 'type':[0,0,0,1,1,0,0,0,2,2,0,0,0,1,1,1,0,0,0]})

我想根据类型列对其进行切片,结果如下图:

我不想根据“类型”列进行分组,因为这样一来,第 1、3、5 和 7 个切片就会在一组中。

提前致谢。

基于在 https://towardsdatascience.com/pandas-dataframe-group-by-consecutive-same-values-128913875dba 找到的一个不错的技巧:

data.groupby((data.type != data.type.shift()).cumsum()).time.first()
>>>
type
1     8:10:15
2     9:01:04
3     9:55:20
4    11:17:02
5    12:02:17
6    13:15:00
7    14:00:02
Name: time, dtype: object

试试

d = {x : y for x , y in data.groupby(data.type.ne(data.type.shift()).cumsum())}
d
{1:       time  type
0  8:10:15     0
1  8:15:12     0
2  8:35:51     0, 2:       time  type
3  9:01:04     1
4  9:14:11     1, 3:        time  type
5   9:55:20     0
6  10:10:00     0
7  10:35:25     0, 4:        time  type
8  11:17:02     2
9  11:45:26     2, 5:         time  type
10  12:02:17     0
11  12:12:03     0
12  12:35:15     0, 6:         time  type
13  13:15:00     1
14  13:25:24     1
15  13:49:52     1, 7:         time  type
16  14:00:02     0
17  14:07:23     0
18  14:25:30     0}