Python 从每组的后续行中扣除第一行值

Python 从每组的后续行中扣除第一行值,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,我有一个数据帧,如: SEQ_N FREQ VAL ABC 1 121 ABC 1 130 ABC 1 127 ABC 1 116 DEF 1 345 DEF 1 360 DEF 1 327 DEF 1 309 我想从每个组的后续行中减去第一行的值 结果: SEQ_N FREQ VAL RES ABC 1 121 0 ABC 1 130 9 ABC 1

我有一个数据帧,如:

SEQ_N FREQ  VAL
ABC   1     121
ABC   1     130
ABC   1     127
ABC   1     116 
DEF   1     345
DEF   1     360
DEF   1     327
DEF   1     309
我想从每个组的后续行中减去第一行的值

结果:

SEQ_N FREQ  VAL  RES
ABC   1     121   0
ABC   1     130   9
ABC   1     127   6
ABC   1     116  -5
DEF   1     345   0
DEF   1     360   15
DEF   1     327  -18
DEF   1     309  -36
用和减去列,以获得每组的第一个值,使其成为与原始值大小相同的
系列

df['RES'] = df['VAL'].sub(df.groupby('SEQ_N')['VAL'].transform('first'))
print (df)
  SEQ_N  FREQ  VAL  RES
0   ABC     1  121    0
1   ABC     1  130    9
2   ABC     1  127    6
3   ABC     1  116   -5
4   DEF     1  345    0
5   DEF     1  360   15
6   DEF     1  327  -18
7   DEF     1  309  -36

transform在这里做什么?链接没有说much@urdearboy它将您调用的结果转换为组的系列,这里它是第一个值。您可以使用
print(df.groupby('SEQ_N')['VAL'].transform('first'))
:)@urderboy进行测试-也可以使用帮助答案。