Python 如果一个dataframe列中的多个值与另一列中的1个值相对应,如何求和
我有这样一个数据框:Python 如果一个dataframe列中的多个值与另一列中的1个值相对应,如何求和,python,pandas,sum,multiple-columns,Python,Pandas,Sum,Multiple Columns,我有这样一个数据框: Code Group Name Number ABC Group_1_ABC Mike 40 Amber 60 Group_2_ABC Rachel 90 XYZ Group_1_XYZ Bob 30 Peter 75 Nikki 55 Group_2_XYZ Julia 23
Code Group Name Number
ABC Group_1_ABC Mike 40
Amber 60
Group_2_ABC Rachel 90
XYZ Group_1_XYZ Bob 30
Peter 75
Nikki 55
Group_2_XYZ Julia 23
Ross 80
LMN Group_1_LMN Paul 95
. . . .
. . . .
我通过按代码、组、名称分组并对数字求和来创建此数据帧
现在我想计算特定代码中每个名称的百分比。为此,我想对一个代码中的所有数字求和。我这样做是为了计算百分比
df['Percentage']= (df['Number']/df['??'])*100
现在,对于每组的总和部分,我不知道如何计算?我想要每个代码类别的总和,以便计算百分比
例如代码:ABC的总数应该是40+60+90=190。然后将这190除以ABC中每个用户的所有数字,以计算其各自代码类别的百分比。因此,从技术上讲,列组和名称在计算每个代码类别的总和时不起任何作用。按一级或按级别名称使用code
:
df['Percentage']= (df['Number']/df.groupby(level=0)['Number'].transform('sum'))*100
或在最新版本中,不需要指定级别参数:
df['Percentage']= (df['Number']/df.groupby('Code')['Number'].transform('sum'))*100
详细信息:
print (df.groupby(level=0)['Number'].transform('sum'))
Code Group Name
ABC Group_1_ABC Mike 190
Amber 190
Group_2_ABC Rachel 190
XYZ Group_1_XYZ Bob 263
Peter 263
Nikki 263
Group_2_XYZ Julia 263
Ross 263
LMN Group_1_LMN Paul 95
Name: Number, dtype: int64
哦,对不起,我不知道。我已经接受了你的回答。
print (df)
Number Percentage
Code Group Name
ABC Group_1_ABC Mike 40 21.052632
Amber 60 31.578947
Group_2_ABC Rachel 90 47.368421
XYZ Group_1_XYZ Bob 30 11.406844
Peter 75 28.517110
Nikki 55 20.912548
Group_2_XYZ Julia 23 8.745247
Ross 80 30.418251
LMN Group_1_LMN Paul 95 100.000000
print (df.groupby(level=0)['Number'].transform('sum'))
Code Group Name
ABC Group_1_ABC Mike 190
Amber 190
Group_2_ABC Rachel 190
XYZ Group_1_XYZ Bob 263
Peter 263
Nikki 263
Group_2_XYZ Julia 263
Ross 263
LMN Group_1_LMN Paul 95
Name: Number, dtype: int64