如何根据多索引 pandas 数据框中的索引级别获取小计
How to get sub total according to index level in multi-index pandas dataframe
我在 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_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
这是一种方法。在 dfs
中 level=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
我在 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_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
这是一种方法。在 dfs
level=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