我有一个如下的数据框架:
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]})

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

我不想基于"type“列进行分组,因为这样第一个、第三个、第五个和第七个切片将在一个组中。
提前谢谢。
发布于 2021-01-18 02:28:13
基于在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发布于 2021-01-18 02:29:30
尝试使用
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}https://stackoverflow.com/questions/65764338
复制相似问题