我有一个名为一年中几个月的数据框,即。 1月,2月,3月等
我希望先按月对数据进行排序,然后按类别进行排序,使其看起来像
Month_Name | Cat
Jan 1
Jan 2
Jan 3
Feb 1
Feb 2
Feb 3
答案 0 :(得分:1)
pandas
不为您执行自定义排序功能,但您可以轻松添加一个临时列,该列是月份的索引,然后按该排序
months = {datetime.datetime(2000,i,1).strftime("%b"): i for i in range(1, 13)}
df["month_number"] = df["month_name"].map(months)
df.sort(columns=[...])
您可能希望利用pandas
'但是,在您的数据框中读取时,请记录好日期:如果您将日期存储为日期而不是字符串月份名称,那么您将能够按原样对它们进行排序。
答案 1 :(得分:0)
使用 Sort_Dataframeby_MonthandNumeric_cols 功能按月和数字列对数据进行排序:
您需要安装两个软件包,如下所示。
pip install sorted-months-weekdays
pip install sort-dataframeby-monthorweek
示例:
import pandas as pd
from sorted_months_weekdays import *
from sort_dataframeby_monthorweek import *
df = pd.DataFrame([['Jan',23],['Jan',16],['Dec',35],['Apr',79],['Mar',53],['Mar',12],['Feb',3]], columns=['Month','Sum'])
df
Out[11]:
Month Sum
0 Jan 23
1 Jan 16
2 Dec 35
3 Apr 79
4 Mar 53
5 Mar 12
6 Feb 3
要按月和数字列获取已排序的数据,我已使用上述函数。
Sort_Dataframeby_MonthandNumeric_cols(df = df, monthcolumn='Month',numericcolumn='Sum')
Out[12]:
Month Sum
0 Jan 16
1 Jan 23
2 Feb 3
3 Mar 12
4 Mar 53
5 Apr 79
6 Dec 35