如何在同一个表(类别和子类别)上进行第一级和第二级聚合

这是我的资料

Name       Category   Sub-Category   sum
yuew       Food       Snack          100
dhjs       Food       Snack          50
jdsd       Food       Drink          60
kjkd       Food       Drink          60
sjdbk      Food       Snack          70
ndkbjd     Clothes    Shirt          80
ndcb       Clothes    Trousers       80
dbkjd      Clothes    Shirt          90


我尝试编码

table_pivot = table.pivot_table(values='sum',index=['Category','Sub-Category'],aggfunc=np.sum)


这是结果,结果仅特定于每个子类别的总和

Category                    Sub Category      Sum
Food                        Snack             220
                            Drink             120
Clothes                     Shirt             170
                            Trousers           80


我需要的结果不仅是每个子类别的总和,而且是类别级别的总和

Category                    Sub Category      Sum
Food                                          340
                            Snack             220
                            Drink             120
Clothes                                       250
                            Shirt             170
                            Trousers           80


我应该怎么做

最佳答案

首先在每个级别上使用sum,然后为原始和最后一个MultiIndex创建appendsort_index

df = table_pivot.sum(level=0)
df = df.set_index([df.index.values, [''] * len(df)])
print (df)
                       sum
Category Sub-Category
Clothes                250
Food                   340

df = table_pivot.append(df).sort_index()
print (df)
                       sum
Category Sub-Category
Clothes                250
         Shirt         170
         Trousers       80
Food                   340
         Drink         120
         Snack         220

关于python - 如何在同一张表上进行第一层和第二层聚合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54400697/

10-09 02:51