簡體   English   中英

如何在多索引熊貓數據框中根據索引級別獲取小計

[英]How to get sub total according to index level in multi-index pandas dataframe

我在熊貓中有一個數據框,如下所示:

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_lvl_0獲取小計(Cons_total和Del_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

這是一種方法。 dfslevel=0 sum

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_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM