【发布时间】:2023-03-24 21:01:01
【问题描述】:
我创建了一个包含三级多索引(组、产品和状态)的数据透视表。状态级别自动按字母顺序排序,但我需要将排序更改为自定义的非字母排序。我可能还需要以类似方式重新排序 Group 和 Product 级别。
pivot = data.pivot_table(rows=['Group', 'Product', 'State'],
values = ['JAN', 'FEB', 'MAR', 'APR', 'MAY',
'JUN', 'JUL', 'AUG', 'SEP', 'OCT',
'NOV', 'DEC'], fill_value=0, margins=True aggfunc=sum)
cols = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
#I used this method to prevent the month names from being alphabetically sorted
pivot = pivot[cols]
数据透视表的一部分如下所示...
JUN JUL AUG
Group Product State
Group A Product A AZ 0 0 0
CO 0 0 0
GA 0 0 0
IL 0 0 0
IN 0 0 0
KS 0 0 0
MN 0 0 0
MO 0 0 0
我需要状态的顺序如下...
state_order = ['AZ','CO','ID','NV','OR','UT','WA','IA','KS','MN','MO','NE','ND','SD','GA','IL','IN','OH','WI']
我尝试了 reindex_axis() 函数,输入上面的列表并指定 level=2。但是,这些州仍然按字母顺序排序。
我们将不胜感激任何有关修复的见解。
【问题讨论】:
-
上面帖子中的方法非常适合在我的 DataFrame 中重新排序和显示观察结果;但是,当我从 DataFrame 创建数据透视表时,顺序发生了变化。在我的原始 DataFrame 中对属性进行排序的状态按字母顺序排列。
-
我相信我需要一种方法来通过提供一个列表来专门重新排序数据透视表的多索引级别 2(状态名称),尽管我已经尝试过但未能做到这一点。
标签: pandas pivot multi-index