Я хотел бы применить функцию f1 по группам к фрейму данных:
import pandas as pd
import numpy as np
data = np.array([['id1','id2','u','v0','v1'],
['A','A',10,1,7],
['A','A',10,2,8],
['A','B',20,3,9],
['B','A',10,4,10],
['B','B',30,5,11],
['B','B',30,6,12]])
z = pd.DataFrame(data = data[1:,:], columns=data[0,:])
def f1(u,v):
return u*np.cumprod(v)
Результат функции зависит от столбца u и столбцов v0 или v1 (это может быть несколько тысяч, потому что я Я делаю симуляцию на многих путях).
Результат должен быть таким
id1 id2 new_v0 new_v1
0 A A 10 70
1 A A 20 560
2 A B 60 180
3 B A 40 100
4 B B 150 330
5 B B 900 3960
Я пытался для начала output = z.groupby(['id1', 'id2']).apply(lambda x: f1(u = x.u,v =x.v0))
, но я даже не могу получить результат только с одним столбцом.
Большое спасибо!