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
CodePudding user response:
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