我在对数据框进行排序时遇到了一些问题,我尝试使用这个问题来解决,但是并未成功。我有一个名为nudf
的数据框,如下所示:
date level_1 0
0 2016-10-01 00:00:00 0.0 74.00
1 2016-10-01 00:30:00 0.5 72
2 2016-10-01 01:00:00 1.0 70
3 2016-10-01 01:30:00 1.5 64
4 2016-10-01 02:00:00 2.0 63
5 2016-10-01 02:30:00 2.5 60
... ... ... ...
19003 2017-09-31 21:30:00 21.5 129
19004 2017-09-31 22:00:00 22.0 118
19005 2017-09-31 22:30:00 22.5 106
19006 2017-09-31 23:00:00 23.0 84
19007 2017-09-31 23:30:00 23.5 76
我想要做的是按照外部月份顺序排序行:
[4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3]
这是最近12个月,从上个月开始算起。我想忽略年份,并按照上述顺序对每个月的行块进行排序。
例如,给出以下行:
0 2016-02-01 00:00:00 0.0 74.00
1 2016-02-01 00:30:00 0.5 72
2 2016-03-01 01:00:00 1.0 70
3 2016-03-01 01:30:00 1.5 64
4 2017-04-01 02:00:00 2.0 63
5 2017-04-01 02:30:00 2.5 60
结果应该是:
4 2017-04-01 02:00:00 2.0 63
5 2017-04-01 02:30:00 2.5 60
0 2016-02-01 00:00:00 0.0 74.00
1 2016-02-01 00:30:00 0.5 72
2 2016-03-01 01:00:00 1.0 70
3 2016-03-01 01:30:00 1.5 64
我尝试过:
nudf['month'] = nudf.apply(lambda row: row.date.month, axis=1)
nudf.month = nudf.month.astype("category")
nudf.month.cat.set_categories([x.month for x in reversed(_get_last_x_months(12))], inplace=True)
nudf.sort_values(["month"], inplace=True)
但日期和时间顺序并未保持。