我有一个键盘日志,它告诉我按键何时被按下/释放:
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")