Вот кадр данных:
id value next_value step
0 10764 612486.33921 800000.0 0.0
1 10764 612486.33921 1000000.0 200000.0
2 10822 97604.30520 100000.0 0.0
3 10823 97805.45851 100000.0 0.0
4 10823 97805.45851 165000.0 65000.0
5 10823 97805.45851 250000.0 85000.0
6 10823 97805.45851 400000.0 150000.0
7 10823 97805.45851 600000.0 200000.0
8 10823 97805.45851 800000.0 200000.0
9 10823 97805.45851 1000000.0 200000.0
10 10823 97805.45851 1200000.0 200000.0
11 10882 33843.33701 40000.0 0.0
12 10882 33843.33701 60000.0 20000.0
13 10882 33843.33701 90000.0 30000.0
14 10882 33843.33701 125000.0 35000.0
15 10882 33843.33701 150000.0 25000.0
16 10882 33843.33701 175000.0 25000.0
17 10882 33843.33701 205000.0 30000.0
18 10882 33843.33701 230000.0 25000.0
19 10882 33843.33701 300000.0 70000.0
20 10882 33843.33701 440000.0 140000.0
21 10758 241890.94525 385000.0 0.0
22 10817 138519.73560 150000.0 0.0
23 10817 138519.73560 200000.0 50000.0
24 10817 138519.73560 250000.0 50000.0
25 10817 138519.73560 300000.0 50000.0
26 10817 138519.73560 350000.0 50000.0
27 10817 138519.73560 400000.0 50000.0
28 10859 73140.30048 80000.0 0.0
29 10859 73140.30048 100000.0 20000.0
Мне нужно добавить к step
первое различие между next_value
и value
в группе на id
.
т.е. для id=10764
step = step + 800000.0 - 612486.33921
,
для id=10822
step = step + 100000.0 - 97604.30520
,
и т.д.
Я пробовал это:
df['step'] += df.groupby('id')[['next_value', 'value']].apply
(lambda x: x.iloc[0, 0] - x.iloc[0, 1])
Но это дает мне все step
значения, равные NaN
.
Что я могу сделать здесь?