Разница во времени между начальными и сокращающими записями в pandas

#python #pandas

#python #pandas

Вопрос:

У меня есть счетчик переменной ‘A’, которая изменяется с течением времени (в секундах). Я хотел бы знать для каждого экземпляра получения ‘A’, сколько времени требуется для того, чтобы это было отменено. Может случиться так, что начальный экземпляр отменяется с использованием нескольких последующих экземпляров. Имеющийся у меня фрейм данных выглядит примерно так:

 df = pd.DataFrame(columns = ['time', 'A'])
df.time = [1, 2, 3, 4, 5, 6, 7, 8]
df.A = [2, 6, 5, -2, -8, -7, 3, 4]
df
    time  A 
0   1     2 
1   2     6 
2   3     5 
3   4     -2 
4   5     -8 
5   6     -7 
6   7     3
7   8     4
  

Теперь, что я хотел бы получить, это разница во времени между начальной A и когда A снова уменьшается. Например, для первых 2 требуется 3 секунды, чтобы отменить эти 2. Таким образом, ожидаемый результат будет:

     A   time_diff  left_on_later_instance
0   2   3          0
1   6   3          2
2   2   2          0
3   3   3          4
4   -3  1          1
5   -1  2          0
6   -3  end        0
  

Обратите внимание, что я хотел бы выполнить усечение, когда A больше не сокращается, для чего я использовал здесь строку ‘end’, но это никоим образом не требуется. Кроме того, экземпляр A может быть очень большим, таким, что может потребоваться > 100 других экземпляров, прежде чем он будет полностью отменен, поэтому простое добавление еще 100 столбцов и просмотр их подобным образом не работает. Я бы предпочел не использовать что-то вроде itterrows(), поскольку это заняло бы слишком много времени.

Я не совсем уверен, с чего начать, поэтому любые указатели очень ценятся. Спасибо!