【发布时间】:2021-07-14 00:55:56
【问题描述】:
我有一个如下所示的数据框,
MATERIALNAME CURINGMACHINE HEADERCOUNTER
0 1015 PPU03R 1529
1 3005 PPY12L 305
2 3005 PPY12R 359
3 3005 PPY12R 404
4 K843 PPZB06L 435
5 K928 PPZ03L 1850
我从这个 df 创建了一个数据透视表,
pivot = pd.pivot_table(df, index = ['MATERIALNAME', 'CURINGMACHINE'],
values = ['HEADERCOUNTER'],
aggfunc = 'count', fill_value = 0)
pivot
(output)
HEADERCOUNTER
MATERIALNAME CURINGMACHINE
1015 PPU03R 1
3005 PPY12L 1
PPY12R 2
K843 PPZB06L 1
K928 PPZ03L 1
我在这篇文章“pandas.concat”Pivot table subtotals in Pandas的帮助下添加了每个材料名称的小计
pivot = pd.concat([
d.append(d.sum().rename((k, 'Total')))
for k, d in pivot.groupby(level=0)
]).append(pivot.sum().rename(('Grand', 'Total')))
我的最终 df 是,
HEADERCOUNTER
MATERIALNAME CURINGMACHINE
1015 PPU03R 1
Total 1
3005 PPY12L 1
PPY12R 2
Total 3
K843 PPZB06L 1
Total 1
K928 PPZ03L 1
Total 1
Grand Total 6
我想根据 'HEADERCOUNTER' 列进行排序。我正在使用这段代码,
sorted_df = pivot.sort_values(by =['HEADERCOUNTER'], ascending = False)
当我对其进行排序时,'MATERIALNAME' 列的效果如下所示,从 3005 代码中可以看到,'MATERIALNAME' 已损坏。
HEADERCOUNTER
MATERIALNAME CURINGMACHINE
Grand Total 6
3005 Total 3
PPY12R 2
1015 PPU03R 1
Total 1
3005 PPY12L 1
K843 PPZB06L 1
Total 1
K928 PPZ03L 1
Total 1
当我对它进行排序时,我想按那个顺序查看;
HEADERCOUNTER
MATERIALNAME CURINGMACHINE
Grand Total 6
3005 Total 3
PPY12R 2
PPY12L 1
1015 PPU03R 1
Total 1
K843 PPZB06L 1
Total 1
K928 PPZ03L 1
Total 1
如果你有什么改变流程的建议,我也可以试试。
编辑: 我尝试了BENY的方法,但是当数据增加时它不起作用。
你可以在下面看到 not ok 结果;
【问题讨论】: