为 Pandas 数据透视表添加总计和小计 [英] Add grand total and subtotal for Pandas pivot table

查看:216
本文介绍了为 Pandas 数据透视表添加总计和小计的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

df=pd.DataFrame({'Region':['Oceanian','Europe','Asia','America','Europe','America','Asia','Oceanian','America'],'Country':["AU","GB","KR","US","GB","US","KR","AU","US"],'Region Manager':['TL','JS','HN','AL','JS','AL','HN','TL','AL'],'Campaign Stage':['Start','Develop','Develop','Launch','Launch','Start','Start','Launch','Develop'],'Product':['abc','bcd','efg','lkj','fsd','opi','vcx','gtp','qwe'],'Curr_Sales': [453,562,236,636,893,542,125,561,371],'Curr_Revenue':[4530,7668,5975,3568,2349,6776,3046,1111,4852],'Prior_Sales': [235,789,132,220,569,521,131,777,898],'Prior_Revenue':[1530,2668,3975,5668,6349,7776,8046,2111,9852]})
table=pd.pivot_table(df, values=['Curr_Sales', 'Curr_Revenue', 'Prior_Sales', 'Prior_Revenue'], index=['Region','Country', 'Region Manager','Campaign Stage','Product'],aggfunc='sum')

如何向每个区域"添加小计?和底部的总计?

How can I add subtotals to each "Region" and a Grand total at the bottom?

任何想法都值得赞赏!谢谢.

Any thoughts are appreciated! Thank you.

推荐答案

与您之前的问题非常相似的解决方案,但是您可以为缺失的级别插入空白字符串(灵感来自@piRSquared 此处):

A fairly similar solution to your previous question, however you can insert blank strings for your missing levels (inspired by @piRSquared here):

out = pd.concat([d.append(d.sum().rename((k, '', '', '', 'Subtotal'))) for k, d in table.groupby('Region')]).append(table.sum().rename(('Grand', '', '', '', 'Total')))

out.index = pd.MultiIndex.from_tuples(out.index)

产量:

                                 Curr_Revenue     ...       Prior_Sales
America  US AL Develop qwe               4852     ...               898
               Launch  lkj               3568     ...               220
               Start   opi               6776     ...               521
                       Subtotal         15196     ...              1639
Asia     KR HN Develop efg               5975     ...               132
               Start   vcx               3046     ...               131
                       Subtotal          9021     ...               263
Europe   GB JS Develop bcd               7668     ...               789
               Launch  fsd               2349     ...               569
                       Subtotal         10017     ...              1358
Oceanian AU TL Launch  gtp               1111     ...               777
               Start   abc               4530     ...               235
                       Subtotal          5641     ...              1012
Grand                  Total            39875     ...              4272

这篇关于为 Pandas 数据透视表添加总计和小计的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆