сравнивая последние значения groupby в каждой группе - панды - PullRequest
0 голосов
/ 08 марта 2019

Это мой фрейм данных:

df = pd.DataFrame({'a':[100, 105, 110, 150, 160], 'b':[2,2,1,3,2], 'c':[200, 210, 110, 450, 300], 'x':[0,0,0,1,1]})

    a  b    c  x
0  100  2  200  0
1  105  2  210  0
2  110  1  110  0
3  150  3  450  1
4  160  2  300  1

Я добавляю этот столбец следующим образом:

df['csum'] = df.groupby('x')['c'].cumsum()

Я хочу добавить еще один столбец, который показывает разницу (в процентах) между последними csum из 0 (что составляет 520) и последний csum из 1 (что составляет 750).В этом случае разница составляет 44,23 процента.Мой желаемый результат выглядит так:

     a  b    c  x  csum   result
0  100  2  200  0   200    44.23
1  105  2  210  0   410    44.23
2  110  1  110  0   520    44.23
3  150  3  450  1   450    44.23
4  160  2  300  1   750    44.23

1 Ответ

1 голос
/ 08 марта 2019

Проверьте с last

df['result']=df.groupby('x').csum.last().pct_change().iloc[-1]
df
Out[891]: 
     a  b    c  x  csum    result
0  100  2  200  0   200  0.442308
1  105  2  210  0   410  0.442308
2  110  1  110  0   520  0.442308
3  150  3  450  1   450  0.442308
4  160  2  300  1   750  0.442308
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...