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