先分组,后对数据进行处理,可以用循环和数据框添加方法来做,参考代码:
import pandas as pd
df=pd.DataFrame({'name':['a']*4+['b']*3+['c']*2,'score':[3,5,3,9,6,5,10,10,12],'reward':[1,2,5,6,3,4,10,11,14]})
dfs=df.groupby('name')[['score','reward']]
dff=pd.DataFrame()
for name,df in dfs:
df=df.reset_index().drop('index',axis=1)
print(df)
x=[]
for i in range(len(df)-1):
x.append((df.loc[i+1,'reward']-df.loc[i,'reward'])*df.loc[i,'score'])
x.append("")
df['proc']=x
dff=dff.append(df,ignore_index=False)
dff=dff.reset_index().drop('index',axis=1)
print(dff)
运行结果:
name score reward proc
0 a 3 1 3
1 a 5 2 15
2 a 3 5 3
3 a 9 6
4 b 6 3 6
5 b 5 4 30
6 b 10 10
7 c 10 11 30
8 c 12 14
有帮助麻烦点个采纳【本回答右上角】,谢谢