如何解决pandas dataframe 如何根据条件对行进行排序
我正在尝试根据条件对已排序的数据集进行排序。数据框如下所示(预期输出是我想要的输出):
id | 活动 | duration_sec | 周期 | intended_cycle | |
---|---|---|---|---|---|
1 | 1 | 开始 | 0.7 | 1 | 1 |
2 | 1 | 一 | 0.3 | 1 | 1 |
3 | 1 | b | 0.4 | 1 | 1 |
4 | 1 | c | 0.5 | 1 | 1 |
5 | 1 | c | 0.5 | 1 | 2 |
6 | 1 | d | 0.4 | 1 | 2 |
7 | 1 | e | 0.6 | 1 | 3 |
8 | 1 | 停止 | 2 | 1 | 3 |
9 | 1 | 开始 | 0.1 | 2 | 4 |
10 | 1 | b | 0.3 | 2 | 4 |
11 | 1 | 停止 | 0.2 | 2 | 4 |
12 | 1 | f | 0.3 | 3 | 5 |
13 | 2 | 停止 | 40 | 4 | 6 |
14 | 2 | 开始 | 3 | 5 | 7 |
15 | 2 | 一 | 0.7 | 5 | 7 |
16 | 2 | 一 | 3 | 5 | 7 |
17 | 2 | b | 0.2 | 5 | 7 |
18 | 2 | 停止 | 0.2 | 5 | 7 |
19 | 2 | 开始 | 0.1 | 6 | 8 |
20 | 2 | f | 0.4 | 6 | 8 |
21 | 2 | g | 0.2 | 6 | 8 |
22 | 2 | h | 0.5 | 6 | 8 |
23 | 2 | h | 6 | 6 | 8 |
24 | 2 | 停止 | 9 | 6 | 8 |
25 | 2 | 开始 | 0.2 | 7 | 9 |
26 | 2 | e | 0.3 | 7 | 9 |
27 | 2 | f | 0.4 | 7 | 10 |
28 | 2 | 停止 | 0.7 | 7 | 10 |
字母代表活动名称。我希望按照预期的周期列进行排序。这是基于在当前序列中的条件:
- 第一个活动持续时间>“开始”后 0.5 秒,将被视为 1 个序列(或子序列,如果您愿意)。
- 如果任一值 >0.5s,连续发生的重复活动将被视为一个活动
- 如果超过 0.5 秒后没有更多活动,则将考虑序列,直到循环列值发生变化
- 如果当前周期内没有超过 0.5 秒的活动,则这些活动将被视为独立的(即第 25-28 行)
我真的很感激任何帮助。非常感谢有一个社区!
sample code for df:
data = {'Unnamed: 0': {0: 1,1: 2,2: 3,3: 4,4: 5,5: 6,6: 7,7: 8,8: 9,9: 10,10: 11,11: 12,12: 13,13: 14,14: 15,15: 16,16: 17,17: 18,18: 19,19: 20,20: 21,21: 22,22: 23,23: 24,24: 25,25: 26,26: 27,27: 28},'id': {0: 1,1: 1,2: 1,3: 1,4: 1,5: 1,6: 1,7: 1,8: 1,9: 1,10: 1,11: 1,12: 2,13: 2,14: 2,15: 2,16: 2,17: 2,18: 2,19: 2,20: 2,21: 2,22: 2,23: 2,24: 2,25: 2,26: 2,27: 2},'activity': {0: 'start',1: 'a',2: 'b',3: 'c',4: 'c',5: 'd',6: 'e',7: 'stop',8: 'start',9: 'b',10: 'stop',11: 'f',12: 'stop',13: 'start',14: 'a',15: 'a',16: 'b',17: 'stop',18: 'start',19: 'f',20: 'g',21: 'h',22: 'h',23: 'stop',24: 'start',25: 'e',26: 'f',27: 'stop'},'duration_sec': {0: 0.7,1: 0.3,2: 0.4,3: 0.5,4: 0.5,5: 0.4,6: 0.6,7: 2.0,8: 0.1,9: 0.3,10: 0.2,11: 0.3,12: 40.0,13: 3.0,14: 0.7,15: 3.0,16: 0.2,17: 0.2,18: 0.1,19: 0.4,20: 0.2,21: 0.5,22: 6.0,23: 9.0,24: 0.2,25: 0.3,26: 0.4,27: 0.7},'cycle': {0: 1,8: 2,9: 2,10: 2,11: 3,12: 4,13: 5,14: 5,15: 5,16: 5,17: 5,18: 6,19: 6,20: 6,21: 6,22: 6,23: 6,24: 7,25: 7,26: 7,27: 7},'intended_cycle': {0: 1,4: 2,5: 2,6: 3,7: 3,8: 4,9: 4,10: 4,11: 5,12: 6,13: 7,14: 7,15: 7,16: 7,17: 7,18: 8,19: 8,20: 8,21: 8,22: 8,23: 8,24: 9,25: 9,26: 10,27: 10}}
df = pd.DataFrame.from_dict(data)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。