熊猫数据框条件变化

Panda dataframe conditional change

我正在处理 csv 时间序列数据,它显示每个时间范围内的步数。一旦步数超过 65535,它将从 0 开始计数,等等。但是由于并非所有数据集都有 65535 计数(有些从 65530 开始,然后是 5,如果他们在时间范围内做了几个步骤),我不能想办法处理好,让6553x之后的每一个0都变成65536..等等

step    realstep
65531     65531
65533     65533
65534     65534
2         65538
4         65540

我正在尝试计算实际步数以获得它们的差异(例如 step/minute)。

找到它在 diff 为负数时重置的位置,并将最大计数器值(65536,因为您从 0 开始计数)添加到该值之后的所有行。如果它重置多次(我添加了一些额外的数据),这将是灵活的

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