Это мой отсортированный фрейм данных по году и месяцу:

df:

Year  Month  YearMonthName  revenue
2015      1       2015 Jan      166
2015      2       2015 Feb      170
2015      3       2015 Mar      187
2015      4       2015 Apr      102
2015      5       2015 May      166
 ...    ...            ...      ...
2020     12       2020 Dec      133

Также список col сортируется по году и месяцу:

    col=list(df['YearMonthName'])
    print(col)

Результат:

['      2015 Jan', '      2015 Feb', '      2015 Mar', '      2015 Apr', ... ,  '      2020 Dec']

Но когда я помещаю список col в pandas pivot table, столбцы сортируются в алфавитном порядке по YearMonthName. Есть идеи, как я могу это отсортировать?

 df_table1 = pd.pivot_table(df, values='revenue', columns=col, aggfunc=np.sum).reset_index()
 print(df_table1)

Результат:

     index               2015 Apr  ...        2020 Oct        2020 Sep
0  revenue                 353726  ...          349309          340451

Ответы (1)

Вы можете сначала выполнить разделение, а затем переиндексировать по столбцам, как показано ниже:

# given that you have sorted YearMonthName
col = df['YearMonthName'].tolist()

# pivot table as you did 
pv = df.pivot_table(values='revenue', columns='YearMonthName', aggfunc='sum')

Тогда вы можете переиндексировать, используя переменную col:

pv = pv.reindex(labels=col, axis=1)
Решение

2022 WebDevInsider