Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果一个dataframe列中的多个值与另一列中的1个值相对应,如何求和_Python_Pandas_Sum_Multiple Columns - Fatal编程技术网

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