在自动化报告时对 pandas 数据框中的列进行排序

Sorting columns in pandas dataframe while automating reports

我正在处理一项自动化任务,我的数据框列如下所示

Defined Discharge Bin   Apr-20  Jan-20  Mar-20  May-20  Grand Total
2-4 min                                             1       1
4-6 min                            5                1       6
6-8 min                            5      7         2       14

我想对从 1 月 20 日开始的列进行排序。这里的问题是列会自动按照字母顺序排序。排序可以手动完成,但由于我正在处理自动化任务,我需要确保每个月当我们提供数据时,列应该根据一年中的月份自动排序。

试试这个:

import pandas as pd


df = pd.DataFrame(data={'Defined Discharge Bin':['2-4 min', '4-6 min','6-8 min'], 'Apr-20':['', '', ''], 'Jan-20':['', 5, 5], 'Mar-20':['', '', 7], 'May-20':[1, 1, 2], 'Grand Total':[1, 6, 14]})
cols_exclude = ['Defined Discharge Bin', 'Grand Total']
cols_date = [c for c in df.columns.tolist() if c not in cols_exclude]
cols_sorted = sorted(cols_date, key=lambda x: pd.to_datetime(x, format='%b-%y'))
df = df[cols_exclude[0:1] + cols_sorted + cols_exclude[-1:]]
print(df)

输出:

  Defined Discharge Bin Jan-20 Mar-20 Apr-20  May-20  Grand Total
0               2-4 min                            1            1
1               4-6 min      5                     1            6
2               6-8 min      5      7              2           14