我正在处理csv时间序列数据,该数据显示每个时间范围内的步数。一旦步数超过65535,它将从0开始计数,以此类推。但是,由于并非所有数据集都具有65535计数(有些从65530开始,所以从5开始,如果他们在时间范围内迈出了几步),我将无法找到一个好方法来处理它,以便6553x之后的每个0都将变为65536。等等。
step realstep
65531 65531
65533 65533
65534 65534
2 65538
4 65540
我正在尝试计算实际步数,以获取它们的差异(例如,步数/分钟)。
答案 0 :(得分:4)
找到将diff
设置为负的复位位置,然后将最大计数器值(由于从0开始计数,所以为65536)添加到超出该值的所有行中。如果它多次重置(我添加了一些额外的数据),这将很灵活
df['real_step'] = df.step + df.step.diff(1).lt(0).cumsum()*65536
step real_step
0 65531 65531
1 65533 65533
2 65534 65534
3 2 65538
4 4 65540
5 65434 130970
6 2 131074
7 4 131076