Python 如何通过删除两个条件之间的所有内容来压缩熊猫中的行
我有一个键盘日志,告诉我何时按下/释放键:Python 如何通过删除两个条件之间的所有内容来压缩熊猫中的行,python,pandas,Python,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
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
当按下某个键(状态=1)时,它将继续写入该键,直到返回到向上状态(状态=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) 检测按键的第一个实例并将行添加到新数据帧,
(2) 遍历行,直到我们看到密钥已被释放,然后将其添加到dataframe,
(3) 将所有内容追加到一个数据帧中,然后按时间排序
我对熊猫还不熟悉,但我知道一定有更好的方法可以充分利用数据帧。我已经发现了dataframe.shift(),但还不能完全理解如何处理按键/释放之间的非恒定行距离
任何建议都将不胜感激:)这是
first()
钥匙
状态
时间
5.
Z
1.
0.133
3.
D
1.
0.298
2.
D
0
0.36
1.
A.
1.
0.522
4.
Z
0
2.1923
0
A.
0
2.3212
你能把数据作为文本而不是图片添加到这个问题上吗?好的,换成文本。很好的解决方案+“很好,”罗伯雷蒙德说
dfu = df.groupby(["key","state"], as_index=False).first().sort_values("time")