Учитывая следующие данные:
df = pd.DataFrame({
'where': ['a','a','a','a','a','a'] + ['b','b','b','b','b','b'],
'what': ['x','y','z','x','y','z'] + ['x','y','z','x','y','z'],
'val' : [1,3,2,5,4,3] + [5,6,3,4,5,3]
})
Что выглядит как:
where what val
0 a x 1
1 a y 3
2 a z 2
3 a x 5
4 a y 4
5 a z 3
6 b x 5
7 b y 6
8 b z 3
9 b x 4
10 b y 5
11 b z 3
Я хотел бы вычислить долю what
в where
и создать новый столбец, который представляет это.
Столбец будет иметь дубликаты. Если я рассмотрим what = x
в приведенном выше и добавим этот столбец, то данные будут выглядеть следующим образом
where what val what_where_prop
0 a x 1 6/18
1 a y 3
2 a z 2
3 a x 5 6/18
4 a y 4
5 a z 3
6 b x 5 9/26
7 b y 6
8 b z 3
9 b x 4 9/26
10 b y 5
11 b z 3
Здесь 6/18
вычисляется путем нахождения общей суммы x
(6 = 1 + 5
) в a
над общей суммой val
в a
. Тот же процесс используется для 9/26
Полное решение будет заполнено аналогично для y
и z
в последнем столбце.