В любом случае, чтобы изменить порядок столбцов сводной таблицы в Python?

#python #pandas #dataframe #pivot-table #multi-index

Вопрос:

Предположим, у меня есть сводная таблица, подобная этой:

 import pandas as pd  d = {'Col_A': [1,2,3,3,3,4,9,9,10,11],   'Col_B': ['A','K','E','E','H','A','J','A','L','A'],  'Value1':[648,654,234,873,248,45,67,94,180,120],  'Value2':[180,120,35,654,789,34,567,21,235,83]  }  df = pd.DataFrame(data=d) df_pvt = pd.pivot_table(df,values=['Value1','Value2'], index='Col_A', columns='Col_B', aggfunc=np.sum).fillna(0) df_pvt  

введите описание изображения здесь

Чего я хочу добиться, так это установить порядок для Col_B (выделено), чтобы выходные значения Value1 и Value2 отображались в таком порядке E, J, A, K, L, H.

Ответ №1:

Преобразуйте col_B в категориальный перед изменением формы:

 (df.astype({'Col_B' : pd.CategoricalDtype(['E', 'J', 'A', 'K', 'L', 'H'], ordered = True)})  .pivot_table(values=['Value1','Value2'],   index='Col_A',   columns='Col_B',   aggfunc=np.sum) )  Value1 Value2 Col_B E J A K L H E J A K L H Col_A 1 0 0 648 0 0 0 0 0 180 0 0 0 2 0 0 0 654 0 0 0 0 0 120 0 0 3 1107 0 0 0 0 248 689 0 0 0 0 789 4 0 0 45 0 0 0 0 0 34 0 0 0 9 0 67 94 0 0 0 0 567 21 0 0 0 10 0 0 0 0 180 0 0 0 0 0 235 0 11 0 0 120 0 0 0 0 0 83 0 0 0  

Чтобы изменить порядок столбцов, вы можете переиндексировать их с помощью соответствующих аргументов ключевого слова:

 (df.astype({'Col_B' : pd.CategoricalDtype(['E', 'J', 'A', 'K', 'L', 'H'], ordered = True)})  .pivot_table(values=['Value1','Value2'],   index='Col_A',   columns='Col_B',   aggfunc=np.sum)  .reindex(['Value2', 'Value1'], axis = 1, level = 0) )   Value2 Value1 Col_B E J A K L H E J A K L H Col_A 1 0 0 180 0 0 0 0 0 648 0 0 0 2 0 0 0 120 0 0 0 0 0 654 0 0 3 689 0 0 0 0 789 1107 0 0 0 0 248 4 0 0 34 0 0 0 0 0 45 0 0 0 9 0 567 21 0 0 0 0 67 94 0 0 0 10 0 0 0 0 235 0 0 0 0 0 180 0 11 0 0 83 0 0 0 0 0 120 0 0 0  

Комментарии:

1. Спасибо, что если я хочу отобразить раздел значения 2 оси с левой стороны и раздел значения 1 оси с правой стороны?

2. Добавлена возможность изменить порядок столбцов