根据顺序数据切片数据框
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}
我有一个数据框如下:
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}