Я создал сводную таблицу с трехуровневым мультииндексом (Group, Product и State). Уровень состояния автоматически сортируется в алфавитном порядке, но мне нужно изменить порядок заказа на пользовательский, не алфавитный порядок. Возможно, мне также придется переупорядочить уровни Group и Product аналогичным образом.Pandas Pivot Table - переопределить порядок мультииндекса
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() fuction, подача в моем списке выше и указание уровня = 2. Однако государства по-прежнему сортировались в алфавитном порядке.
Любое понимание исправления было бы высоко оценено.
может быть дубликатом http://stackoverflow.com/questions/26707171/sort-pandas-dataframe-based-on-list – aensm
Метод в сообщении выше очень хорошо работал для переупорядочения и отображения наблюдений в моем DataFrame; однако, когда я создал сводную таблицу из DataFrame, порядок изменяется. Состояния, которые были отсортированы в моем исходном DataFrame, применяются в алфавитном порядке. – marshackVB
Я считаю, что мне нужен способ специально переупорядочить мультииндексный уровень уровня 2 сводной таблицы (имена состояний), предоставив список, хотя я попытался и не смог выполнить это. – marshackVB