如何按月顺序对我的数据进行排序?我希望我的月订单是 4 月到 4 月(即财政年度)
Posted
技术标签:
【中文标题】如何按月顺序对我的数据进行排序?我希望我的月订单是 4 月到 4 月(即财政年度)【英文标题】:How to sort my data according to month order? I want my month order to be april to april (that is the financial year) 【发布时间】:2019-09-30 11:11:26 【问题描述】:我已经绘制了月份与营业额的关系图,但月份顺序不一致。它们是按字母顺序排列的。我希望它们像在财政年度一样订购,即四月,五月,六月......三月。
这就是数据框的样子。
Month_name CASH/TPA Total
April CASH 2184074.0
August CASH 1780238.0
December CASH 1176889.0
【问题讨论】:
Python3 How to convert date into monthly periods where the first period is September的可能重复 【参考方案1】:使用参数categories
中定义的有序分类:
months = ['April','May','June','July','August',
'September','October','November',
'December','January','February','March']
df['Month_name'] = pd.CategoricalIndex(df['Month_name'], ordered=True, categories=months)
如果需要按Month_name
排序:
df1 = df.sort_values('Month_name')
或通过两列:
df2 = df.sort_values(['CASH/TPA', 'Month_name'])
或者如果需要,pivoting:
df3 = df.pivot('Month_name','CASH/TPA','Total')
【讨论】:
月 = ['四月','五月','六月','七月','八月','九月','十月','十一月','十二月','一月' ,'二月','三月'] df.set_index('Month_name') df['Month_name'] = pd.CategoricalIndex(df['Month_name'], ordered=True, categories=months) df1 = df.sort_values('Month_name') 这正是我所做的,我得到了错误:- KeyError: 'Month_name' 在处理上述异常期间,发生了另一个异常:【参考方案2】:df['Month_name']=pd.to_datetime(df.Month_name, format='%B', errors='coerce').dt.month.map(":02".format)
Month_name CASH/TPA Total
0 April CASH 2184074.0
1 August CASH 1780238.0
2 December CASH 1176889.0
Month_name CASH/TPA Total
0 04 CASH 2184074.0
1 08 CASH 1780238.0
2 12 CASH 1176889.0
【讨论】:
它给出了一个错误,说数据框没有名为 Month_name 的属性 AttributeError: 'DataFrame' 对象没有属性 'Month_name' 试试 df['Month_name'] @KopalSharma 它确实对我有用 :) 还是不行……不过谢谢大家的帮助!以上是关于如何按月顺序对我的数据进行排序?我希望我的月订单是 4 月到 4 月(即财政年度)的主要内容,如果未能解决你的问题,请参考以下文章