以升序排列列(月)

时间:2019-11-01 16:10:37

标签: python dataframe

1 / Excel中的原始数据

我有一个带有这些数据值的数据框,如下所示: enter image description here

2 /编码

将此excel加载到数据框中,编写了ivot_table代码以对类别建立索引并显示每月的交易次数。

这是代码:

loadexpense_df = pd.read_excel("C:ExpensesTestData.xlsx")
month_df = pd.pivot_table(loadexpense_df,index="Category",columns="Month",aggfunc={"Month":len}, fill_value=0)

month_df的结果如下所示: enter image description here

3 /问题

我想按以下顺序排列月份库:2月,3月,4月,依此类推。这可能吗?

感谢指导

2 个答案:

答案 0 :(得分:1)

首先,查看您当前的列:

cols = month_df.columns.tolist()

我认为您的cols现在应该像这样:

[('Month', 'Apr'), ('Month', 'Aug'), ...]

因此您可以像这样重新排序cols

month_names = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
cols = sorted(cols, key=lambda x: month_names.index(x[1]))

最后用新的列顺序设置months_df:

month_df = month_df[cols]

我认为已经完成了。

您可以在this question中了解有关对列进行重新排序的更多信息。

答案 1 :(得分:0)

IIUC:

您需要按所需顺序重新索引轴。有一种称为reindex_axis

的方法

我假设您具有各列的名称:

否:

column_list = month_df.columns.tolist()

使用:访问月份名称。

column_list.index(x[1])

如果是

order_of_column = ['Feb', 'Mar', 'Apr','May', 'Jun', 'Jul', 'Aug']

month_df1 = month_df.reindex_axis(order_of_column, axis=1)