Вычесть значение 1-й строки из последующих строк для каждой группы - PullRequest
0 голосов
/ 03 марта 2019

У меня есть такой фрейм данных:

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

Я хочу вычесть значение 1-й строки из последующих строк для каждой группы.

Результат:

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

1 Ответ

0 голосов
/ 03 марта 2019

Вычтите столбец на Series.sub с transform и first для получения первого значения для групп до Series с тем же размером, что и у оригинала:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...