Python 如何在多索引数据帧中按索引级别获取小计

Python 如何在多索引数据帧中按索引级别获取小计,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我在pandas中有一个数据帧,如下所示: columns Year_1 Year_2 Idx_lvl_0 Idx_lvl_1 Cons. Prod_1 156 1541 Prod_2 312 2311 Del. Prod_1 23 12 Prod_2 0 4 问题:我如何根据Idx\u lvl\u 0

我在pandas中有一个数据帧,如下所示:

columns               Year_1  Year_2
Idx_lvl_0  Idx_lvl_1
Cons.      Prod_1        156    1541
           Prod_2        312    2311
Del.       Prod_1         23      12
           Prod_2          0       4
问题:我如何根据
Idx\u lvl\u 0
获得小计(Cons\u total和Del\u total),如下所示

columns               Year_1  Year_2
Idx_lvl_0  Idx_lvl_1
Cons.      Prod_1        156    1541
           Prod_2        312    2311
           Cons_total    468    3852
Del.       Prod_1         23      12
           Prod_2          0       4
           Del_total      23      16

这里有一条路。在
dfs

In [1382]: dfs = df.sum(level=0)
如果顺序不重要,只需附加附加索引的结果

In [1383]: df.append(dfs.assign(Idx_lvl_1=dfs.index.str[:-1] + '_Total')
                        .set_index('Idx_lvl_1', append=True))
Out[1383]:
                      Year_1  Year_2
Idx_lvl_0 Idx_lvl_1
Cons.     Prod_1         156    1541
          Prod_2         312    2311
Del.      Prod_1          23      12
          Prod_2           0       4
Cons.     Cons_Total     468    3852
Del.      Del_Total       23      16
对于订单,您可以使用
sort\u index

In [1384]: df.append(dfs.assign(Idx_lvl_1=dfs.index.str[:-1] + '_Total')
                        .set_index('Idx_lvl_1', append=True)).sort_index()
Out[1384]:
                      Year_1  Year_2
Idx_lvl_0 Idx_lvl_1
Cons.     Cons_Total     468    3852
          Prod_1         156    1541
          Prod_2         312    2311
Del.      Del_Total       23      16
          Prod_1          23      12
          Prod_2           0       4
dfs

In [1385]: dfs
Out[1385]:
           Year_1  Year_2
Idx_lvl_0
Cons.         468    3852
Del.           23      16