получить соотношение путем итерации по двум столбцам - PullRequest
0 голосов
/ 04 мая 2020

Привет мой фрейм данных, как показано ниже

Date       Key  y
1/2/2013    A   1
1/2/2013    B   2
1/2/2013    C   1
2/2/2013    A   1
2/2/2013    c   1
2/2/2013    B   3

Теперь я хочу создать новый «коэффициент» столбца, который для данной даты (1/2/2013), отношение ключа A будет y (A) / (y (A) + y (B) + y (C)), что равно 1 / (1 + 2 + 1), т.е. 0,25. Мой окончательный DF будет выглядеть следующим образом

Date       Key  y   ratio
1/2/2013    A   1     0.25
1/2/2013    B   2     0.5
1/2/2013    C   1     0.25
2/2/2013    A   1     0.2
2/2/2013    c   1     0.2
2/2/2013    B   3     0.6

очень ценю помощь

1 Ответ

2 голосов
/ 04 мая 2020

Вы можете использовать groupby().transform('sum') для вычисления суммы группы, тогда это просто простое деление:

df['ratio'] = df['y']/df.groupby('Date')['y'].transform('sum')

Вывод:

       Date Key  y  ratio
0  1/2/2013   A  1   0.25
1  1/2/2013   B  2   0.50
2  1/2/2013   C  1   0.25
3  2/2/2013   A  1   0.20
4  2/2/2013   c  1   0.20
5  2/2/2013   B  3   0.60
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...