我想更改以下代码显示的订单日期。
我想要的是订单的结果(周一、周二、周三、周四、周五、周六、周日)
-我应该说,按某个预定义的顺序按键排序吗?
这是我的代码,需要调整一下:
f8 = df_toy_indoor2.groupby(['device_id', 'day'])['dwell_time'].sum()
print(f8)
当前结果:
device_id day
device_112 Thu 436518
Wed 636451
Fri 770307
Tue 792066
Mon 826862
Sat 953503
Sun 1019298
device_223 Mon 2534895
Thu 2857429
Tue 3303173
Fri 3548178
Wed 3822616
Sun 4213633
Sat 4475221
预期结果:
device_id day
device_112 Mon 826862
Tue 792066
Wed 636451
Thu 436518
Fri 770307
Sat 953503
Sun 1019298
device_223 Mon 2534895
Tue 3303173
Wed 3822616
Thu 2857429
Fri 3548178
Sat 4475221
Sun 4213633
这里,type(df_toy_indoor2.groupby(['device_id', 'day'])['dwell_time'])
是一个“pandas.core.groupby.SeriesGroupBy”类。
我找到了.sort_values()
,但它是一个内置的按值排序函数。
我想让一些指针来设置一些顺序,以便使用它进一步处理数据。
提前谢谢。
将
'day'
列设置为categorical数据类型,只需确保在设置类别时,天数列表按您希望的顺序排序。然后,执行groupby
将自动为您排序,但如果您尝试对列进行排序,则它将按照指定的正确顺序进行排序。更新:astype不再接受类别,使用:
结果输出:
请注意,此方法适用于任何类型的自定义排序。例如,如果有一个列的条目是
'a', 'b', 'c'
,并且希望它按非标准顺序排序,例如'c', 'a', 'b'
,那么您只需执行相同类型的过程:将该列指定为categorical,而您的类别则按所需的非标准顺序。可能不是最好的方法,但据我所知,不能将函数/映射传递给
sort_values
。作为解决方法,我通常使用assign
添加新列并按该列排序。在您的示例中,这还需要先重置索引(并将其设置回原来的位置)。花了我一些时间,但我找到了解决办法。reindex做你想做的事。请参阅我的代码示例:
给出:
然后重新编制索引:
或者更方便(博汉的功劳)
给出:
相关问题 更多 >
编程相关推荐