gpt4 book ai didi

python - 按一定顺序排序(情况: pandas DataFrame Groupby)

转载 作者:太空狗 更新时间:2023-10-29 19:34:37 24 4
gpt4 key购买 nike

我想更改以下代码显示的订单日期。
我想要的是顺序为(周一、周二、周三、周四、周五、周六、周日)的结果
- 我应该说,按特定预定义的顺序按键排序吗?


这是我的代码,需要一些调整:

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() ,但它是一个按值排序的内置函数。
我想获得一些指示来设置一些顺序以使用它进一步进行数据操作。
提前致谢。

最佳答案

花了我一些时间,但我找到了解决方案。 reindex做你想做的事。请参阅我的代码示例:

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)

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

关于python - 按一定顺序排序(情况: pandas DataFrame Groupby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com