我有一个大约100k行的时间序列pandas数据帧以及相关的任务,必须按顺序进行分析。提取每个连续任务的索引的最佳方法是什么。附上了以下数据的样本格式。 预期的一系列任务及其索引号(开始,结束):放松(1,2) - >暂停(3,4) - >放松(5) - >抓握(6,8) - >暂停( 9,10) - >夹(11,12)
基于任务过滤器切片数据会产生非常扭曲的输出 这不是有意的 relax-> pause->手柄 - >捏
答案 0 :(得分:1)
我认为您需要为唯一的连续task
创建辅助列,然后使用duplicated
按boolean indexing
进行过滤:
df['g'] = df['task'].ne(df['task'].shift()).cumsum()
df = df[~df.duplicated(['task','g']) | ~df.duplicated(['task','g'], keep='last')]
print (df)
Timestamp task loc age g
1 2017-11-10 03:41:22.003809+00:00 relax NY 32 1
2 2017-11-10 03:41:22.004809+00:00 relax HI 26 1
3 2017-11-10 03:41:22.005809+00:00 pause FL 25 2
4 2017-11-10 03:41:22.006809+00:00 pause NY 32 2
5 2017-11-10 03:41:22.007809+00:00 relax HI 26 3
6 2017-11-10 03:41:22.008809+00:00 grip FL 25 4
8 2017-11-10 03:41:22.010809+00:00 grip HI 26 4
9 2017-11-10 03:41:22.011809+00:00 pause FL 25 5
10 2017-11-10 03:41:22.012809+00:00 pause NY 32 5
11 2017-11-10 03:41:22.013809+00:00 pinch HI 26 6
12 2017-11-10 03:41:22.014809+00:00 pinch FL 25 6