Способ сделать это будет следующим.Пример кадра данных:
df = pd.DataFrame({'ID':[1,1,5,3,3], 'delta':[0.3,0.5,0.2,2,4]}).assign(value=[2,5,4,2,3])
print(df)
ID delta value
0 1 0.3 2
1 1 0.5 5
2 5 0.2 4
3 3 2.0 2
4 3 4.0 3
Заполните value
из строки выше как:
df['value'] = df.shift(1).delta * df.shift(1).value
Groupby
, чтобы получить индексы, где первый ID
Появляется:
w = df.groupby('ID', as_index=False).nth(0).index.values
и вычисляет значения для value
, используя индексы в w
:
df.loc[w,'value'] = df.loc[w,'delta'] * 1000
, что дает для этого примера:
ID delta value
0 1 0.3 300.0
1 1 0.5 0.6
2 5 0.2 200.0
3 3 2.0 2000.0
4 3 4.0 4.0