Сортировка столбцов в pandas фрейме данных при автоматизации отчетов - PullRequest
0 голосов
/ 16 июня 2020

Я работаю над задачей автоматизации, и мои столбцы фрейма данных выглядят так, как показано ниже

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

Я хочу отсортировать столбцы, начиная с 20 января. Проблема здесь в том, что столбцы автоматически сортируются в алфавитном порядке. Сортировку можно выполнить вручную, но поскольку я работаю над задачей автоматизации, мне нужно обеспечить, чтобы каждый месяц, когда мы загружаем данные, столбцы автоматически сортируются по месяцам года.

1 Ответ

1 голос
/ 16 июня 2020

Попробуйте это:

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
...