获取 pandas 中列的相对值

Getting the relative value of a column in pandas

这是个简单的问题(我猜),但我就是找不到解决方法。

我有一个这样的 pandas 数据集:

ID  SCORE   REGION  COUNT
0   A       WEST    855
1   A       NORTH   1631
2   A       EAST    401
3   A       SOUTH   9193
4   B       WEST    707
5   B       NORTH   1575
6   B       EAST    396
7   B       SOUTH   6953
8   C       WEST    2513
9   C       NORTH   5442
10  C       EAST    1555
11  C       SOUTH   24724

如何创建另一列仅显示每个区域的相对值。例如:对于 A 分数,南部地区占总数的 76,10% (9193/ (855+1631+401+9193))。现在我需要对所有行都这样做。我该怎么做?

谢谢!

使用groupby.transform:

df['PERCENT'] = df['COUNT'].groupby(df.SCORE).transform(lambda x: x / x.sum()) * 100

df
    ID SCORE REGION  COUNT    PERCENT
0    0     A   WEST    855   7.077815
1    1     A  NORTH   1631  13.501656
2    2     A   EAST    401   3.319536
3    3     A  SOUTH   9193  76.100993
4    4     B   WEST    707   7.340878
5    5     B  NORTH   1575  16.353442
6    6     B   EAST    396   4.111723
7    7     B  SOUTH   6953  72.193957
8    8     C   WEST   2513   7.340655
9    9     C  NORTH   5442  15.896477
10  10     C   EAST   1555   4.542268
11  11     C  SOUTH  24724  72.220599