Panda Dataframe условное изменение - PullRequest
0 голосов
/ 28 января 2019

Я работаю с данными временных рядов CSV, которые показывают количество шагов за определенный период времени.Как только число шагов превысит 65535, оно будет отсчитываться с 0 и т. Д. Однако, поскольку не все наборы данных имеют 65535 отсчетов (некоторые переходят от 65530, а затем к 5, если они сделали несколько шагов в течение периода времени), я не могунайти хороший способ справиться с этим, чтобы каждый 0 после 6553x изменился на 65536 ... и т. д.

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

Я пытаюсь посчитать реальный шаг, чтобы получить их разницу (например, шаг / минута).

1 Ответ

0 голосов
/ 28 января 2019

Найдите, где оно сбрасывается с 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
...