total of all rows in new column pandas

Issue

enter code here

question:- get the total of all one two columns

              bar                 baz                 foo              
          one       two       one       two       one    two        
name
A       0.895717  0.805244  1.206412  2.565646  1.431256   1.431256     
B       0.410835  0.813850  0.132003  0.827317  0.076467   0.076467     
C       1.413681  1.607920  1.024180  0.569605  0.875906   0.875906 

output:-

               bar                 baz                 foo   
          one       two       one       two        one      two     
name                                                                 total of one   total of two
A       0.895717  0.805244  1.206412  2.565646   1.431256  1.431256   sum of one    sum of two 
B       0.410835  0.813850  0.132003  0.827317   0.076467  0.076467   sum of one    sum of two
C       1.413681  1.607920  1.024180  0.569605   0.875906  0.875906   sum of one    sum of two
Total    sum        sum      sum       sum         sum      sum 

Solution

You can aggregate per secon dlevel of MultiIndex in columns and then add first level all for MultiIndex, so possible use left join by DataFrame.join:

df1 = pd.concat({'all': df.groupby(level=1, axis=1).sum().add_prefix('total_')}, axis=1)
df = df.join(df1)
print (df)
        bar                 baz                 foo                 all  \
        one       two       one       two       one       two total_one   
A  0.895717  0.805244  1.206412  2.565646  1.431256  1.431256  3.533385   
B  0.410835  0.813850  0.132003  0.827317  0.076467  0.076467  0.619305   
C  1.413681  1.607920  1.024180  0.569605  0.875906  0.875906  3.313767   

             
  total_two  
A  4.802146  
B  1.717634  
C  3.053431  

Answered By – jezrael

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published