Pandas DataFrame делит один столбец на сумму групп столбцов

Я работаю с DataFrame, где хочу найти%, который каждый элемент вносит в группу.

Например, у меня есть следующий кадр данных

    a
Out[295]: 
  c1  c2  c3
0  a  p1   1
1  b  p1   2
2  c  p2   3
3  d  p3   4

Я хочу получить сумму каждой группы на c2, а затем разделить c3 на эту сумму. Я могу использовать функцию groupby для получения сумм:

b = a.groupby('c2').aggregate({'c3':sum})

b
Out[298]: 
    c3 
c2    
p1   3
p2   3
p3   4

Но тогда я не знаю, как разделить ТОЛЬКО столбец c3 на эти результаты, чтобы получить следующее:

  c1  c2  c3
0  a  p1   0.333
1  b  p1   0.667
2  c  p2   1.000
3  d  p3   1.000

person Christine    schedule 12.02.2018    source источник


Ответы (1)


Вы можете использовать transform

b = a.groupby('c2').c3.transform('sum')
b
Out[451]: 
0    3
1    3
2    3
3    4
Name: c3, dtype: int64
a['c3']/=b
a
Out[453]: 
  c1  c2        c3
0  a  p1  0.333333
1  b  p1  0.666667
2  c  p2  1.000000
3  d  p3  1.000000
person BENY    schedule 12.02.2018
comment
@Christine yw :-) счастливого кодирования - person BENY; 12.02.2018