首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据顺序数据对数据帧进行切片

根据顺序数据对数据帧进行切片
EN

Stack Overflow用户
提问于 2021-01-18 02:16:42
回答 2查看 28关注 0票数 1

我有一个如下的数据框架:

代码语言:javascript
复制
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“列进行分组,因为这样第一个、第三个、第五个和第七个切片将在一个组中。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-18 02:28:13

基于在https://towardsdatascience.com/pandas-dataframe-group-by-consecutive-same-values-128913875dba上发现的一个很好的技巧:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2021-01-18 02:29:30

尝试使用

代码语言:javascript
复制
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}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65764338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档