如何通过删除两个条件之间的所有内容来压缩Pandas中的行



我有一个键盘日志,它告诉我按键何时被按下/释放:

key state   time
z   1   0.133
d   1   0.298
d   0   0.36
a   1   0.522
a   1   0.6455
a   1   0.7744
a   1   0.9033
a   1   1.0322
a   1   1.1611
a   1   1.29
a   1   1.4189
a   1   1.5478
a   1   1.6767
a   1   1.8056
a   1   1.9345
a   1   2.0634
z   0   2.1923
a   0   2.3212

当一个键被按下(state == 1),它继续写这个键,直到它返回到一个向上的状态(state = 0)。我该如何压缩这样一个表,使它只包括键第一次被按下的行和键被释放的行?此表单将使计算按键持续时间更容易。

key state   time
z   1   0.133
d   1   0.298
d   0   0.36
a   1   0.522
z   0   2.1923
a   0   2.3212

我的第一个想法是使用我所知道的,即一个丑陋的循环,将重复每个键:

(1)检测keypress的第一个实例,并添加行到新的数据帧,(2)遍历行,直到我们看到键已被释放,然后将其添加到数据帧中。(3)将所有内容附加到一个数据帧中,然后按时间

排序我是Pandas的新手,但我知道一定有更好的方法来适当地利用数据框架。我已经发现了datafframe .shift(),但不能完全理解如何处理按键/释放之间的行间距。

任何建议都将是感激的:)

这是first()的一个简单应用

dfu = df.groupby(["key","state"], as_index=False).first().sort_values("time")
0.13300.3602.192302.3212

最新更新