按小计排序

2024-10-01 11:22:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多索引数据帧,如下所示。我有意识地提供完整的数据,因为当我用小数据尝试这个解决方案时pandas multi index sort with several conditions是可以的,但是当我用完整的数据尝试时,它不起作用

多索引为:“MATERIALNAME”和“CURINGMACHINE”

“MATERIALNAME”:级别0

“固化机”:级别1

                            HEADERCOUNTER
MATERIALNAME CURINGMACHINE               
1011         PPU04L                     1
             SubTotal                   1
1033         PPZB12L                    1
             SubTotal                   1
2618         PPZF04L                    1
             SubTotal                   1
2913         PPZB02L                    4
             PPZB02R                    8
             SubTotal                  12
2983         PPZB03L                    1
             SubTotal                   1
3411         PPB01L                     1
             PPC13R                     1
             SubTotal                   2
4444         PPU11L                     1
             SubTotal                   1
4600         PPU10L                     1
             SubTotal                   1
4994         PPV06R                     4
             SubTotal                   4
6161         PPZB14R                    3
             SubTotal                   3
6751         PPZE02L                    1
             SubTotal                   1
6907         PPZC11L                    3
             PPZC11R                    3
             SubTotal                   6
7905         PPY06R                     1
             SubTotal                   1
8594         PPZA10L                    2
             PPZA10R                    6
             SubTotal                   8
9995         PPZF10R                    1
             SubTotal                   1
D250         PPH07                      1
             SubTotal                   1
D560         PPH10                      1
             SubTotal                   1
D570         PPH11                      2
             SubTotal                   2
K188         PPZD09R                    1
             SubTotal                   1
K204         PPB02R                     1
             SubTotal                   1
K314         PPZC12L                    4
             PPZC12R                    1
             SubTotal                   5
K318         PPN12R                     2
             SubTotal                   2
K698         PPZA12L                    1
             SubTotal                   1
K709         PPE11R                     1
             PPE12R                     1
             SubTotal                   2
K902         PPL12L                     1
             PPM02L                     1
             PPM02R                     3
             SubTotal                   5
K934         PPM06L                     2
             SubTotal                   2
K967         PPL09L                     4
             PPL09R                     1
             PPN04L                     2
             SubTotal                   7
K990         PPM04L                     1
             PPM04R                     4
             PPN05R                     2
             SubTotal                   7
Grand        Total                     81

我想根据每个级别0“MATERIALNAME”列的小计对该df进行排序

编辑: 这不应该发生

enter image description here


Tags: 数据pandasindexwith解决方案级别sortmulti
1条回答
网友
1楼 · 发布于 2024-10-01 11:22:48

首先,我会重置索引,这样您就又有了一个数据帧(现在它看起来像一个带有多索引的熊猫系列)

df = df.reset_index()

然后可以添加新列,其中包含要排序的值

df["subtotal"] = df.groupby("MATERIALNAME")["HEADERCOUNTER"].transform(sum)

最后,只需对其进行排序(最高优先)。如果多个组中的小计相同,它将按组标识符对它们进行排序

df.sort_values(["subtotal", "MATERIALNAME"], ascending=False)

相关问题 更多 >