且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将总计添加到Pandas数据透视表

更新时间:2023-11-30 23:08:10

基于您发布的示例:

# read your data from clipboard
df = pd.read_clipboard()

# run your pivot_table code from above
report = df.groupby(['SUPER_TYPE']).apply(lambda sub_df:  sub_df.pivot_table(index=['STRATA', 'OS_TYPE', 'STAND_NUMB', 'SILV_PRES'], values=['ACRES'],aggfunc=np.sum, margins=True,margins_name= 'TOTAL'))

# this is creating a new row at level(1) called grand total
# set it equal to the sum of ACRES where level(1) != 'Total' so you are not counting the  calculated totals in the total sum
report.loc[('', 'Grand Total','','',''), :] = report[report.index.get_level_values(1) != 'TOTAL'].sum()
report


                                                     ACRES
SUPER_TYPE  STRATA  OS_TYPE STAND_NUMB  SILV_PRES   
HS          HS3B    HS3B      3092.0    OSR/2SS/SCC 17.3
                              3580.0    OSR/2SS/SCC 8.1
                              3581.0    OSR/2SS/SCC 16.6
                              3587.0    OSR/2SS/SCC 13.8
                              3594.0    OSR/2SS/SCC 31.7
                              3607.0    OSR/2SS/SCC 27.7
            TOTAL                                   115.2
HW          H3AB       H3A    3571.0    OSR/2SS/SCC 30.7
                              3573.0    OSR/2SS/SCC 30.4
                              3585.0    OSR/2SS/SCC 25.8
                              3588.0    OSR/2SS/SCC 18.1
                              3589.0    OSR/2SS/SCC 54.7
                              3597.0    OSR/2SS/SCC 41.6
                              3601.0    OSR/2SS/SCC 11.9
                     . . . 

         Grand Total                                813.6