Панды: Рассчитать процент от столбца для каждого класса - PullRequest
0 голосов
/ 02 декабря 2018

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

   Class   Boolean  Sum
0       1         0  10
1       1         1  20
2       2         0  15
3       2         1  25
4       3         0  52
5       3         1  48

Я хочу рассчитать процент 0/1 для каждого класса, поэтому, например, выходные данные могут быть:

   Class   Boolean  Sum  %
0       1         0  10  0.333
1       1         1  20  0.666
2       2         0  15  0.375
3       2         1  25  0.625
4       3         0  52  0.520
5       3         1  48  0.480

1 Ответ

0 голосов
/ 02 декабря 2018

Разделить столбец Sum с GroupBy.transform для возвращаемой серии той же длины, что и исходный кадр данных, заполненный агрегированными значениями:

df['%'] = df['Sum'].div(df.groupby('Class')['Sum'].transform('sum'))
print (df)
   Class  Boolean  Sum         %
0      1        0   10  0.333333
1      1        1   20  0.666667
2      2        0   15  0.375000
3      2        1   25  0.625000
4      3        0   52  0.520000
5      3        1   48  0.480000

Деталь:

print (df.groupby('Class')['Sum'].transform('sum'))
0     30
1     30
2     40
3     40
4    100
5    100
Name: Sum, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...