按特定顺序排序(情况:pandas DataFrame Groupby) [英] Sort by certain order (Situation: pandas DataFrame Groupby)
问题描述
我想更改以下代码显示的订购日期.
我想要的是顺序(周一,周二,周三,周四,周五,周六,周日)的结果
-我应该说,按键以某些预定义的顺序排序吗?
I want to change the day of order presented by below code.
What I want is a result with the order (Mon, Tue, Wed, Thu, Fri, Sat, Sun)
- should I say, sort by key in certain predefined order?
这是我的代码,需要进行一些调整:
Here is my code which needs some tweak:
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'.
Here, type(df_toy_indoor2.groupby(['device_id', 'day'])['dwell_time'])
is a class 'pandas.core.groupby.SeriesGroupBy'.
我找到了.sort_values()
,但是它是一个内置的按值排序的函数.
我想获得一些指针来设置一些顺序,以使用它进行进一步的数据处理.
预先感谢.
I have found .sort_values()
, but it is a built-in sort function by values.
I want to get some pointers to set some order to use it further data manipulation.
Thanks in advance.
推荐答案
花了我一些时间,但我找到了解决方案. 重新索引可以做什么你要.参见我的代码示例:
Took me some time, but I found the solution. reindex does what you want. See my code example:
a = [1, 2] * 2 + [2, 1] * 3 + [1, 2]
b = ['Mon', 'Wed', 'Thu', 'Fri'] * 3
c = list(range(12))
df = pd.DataFrame(data=[a,b,c]).T
df.columns = ['device', 'day', 'value']
df = df.groupby(['device', 'day']).sum()
给予:
value
device day
1 Fri 7
Mon 0
Thu 12
Wed 14
2 Fri 14
Mon 12
Thu 6
Wed 1
然后重新索引:
df.reindex(['Mon', 'Wed', 'Thu', 'Fri'], level='day')
或更方便地(归功于burhan)
or more conveniently (credits to burhan)
df.reindex(list(calendar.day_abbr), level='day')
给予:
value
device day
1 Mon 0
Wed 14
Thu 12
Fri 7
2 Mon 12
Wed 1
Thu 6
Fri 14
这篇关于按特定顺序排序(情况:pandas DataFrame Groupby)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!