gpt4 book ai didi

python - pandas系列中的两列排序

转载 作者:行者123 更新时间:2023-12-01 00:45:35 25 4
gpt4 key购买 nike

对我之前提出的问题稍作修改。我设法找到了一个解决方案,可以按 pandas 系列中的特定列对值进行排序。然而,问题是纯粹按时间排序不允许我考虑时间发生的不同日期。我知道我可以对订单进行硬编码并使用 .loc 来应用订单,但想找出是否有一个更简单的解决方案主要按周(最早的一周在前)和时间(每周 0-23 小时)进行排序.

这是我再次拥有的数据框示例:

weeknum   time_hour
16-22Jun 0.0 5
2-8Jun 0.0 3
23-29Jun 0.0 11
9-15Jun 0.0 3
16-22Jun 1.0 3
2-8Jun 1.0 6
23-29Jun 1.0 3
9-15Jun 1.0 8
16-22Jun 2.0 3
2-8Jun 2.0 6
23-29Jun 2.0 3
16-22Jun 3.0 4
2-8Jun 3.0 2
23-29Jun 3.0 3
9-15Jun 3.0 4
16-22Jun 4.0 2
2-8Jun 4.0 7
23-29Jun 4.0 1
9-15Jun 4.0 7
16-22Jun 5.0 2
2-8Jun 5.0 9
23-29Jun 5.0 9
9-15Jun 5.0 12
16-22Jun 6.0 5
2-8Jun 6.0 12
23-29Jun 6.0 6
9-15Jun 6.0 14
16-22Jun 7.0 12
2-8Jun 7.0 17
23-29Jun 7.0 19

这是我的代码:

merged_clean.groupby('weeknum')['time_hour'].value_counts().sort_index(level=['time_hour'])

最佳答案

使用函数sorted by multiple keys用于对 MultiIndex 进行排序,并在 - 之前转换第一个数字,并用于更改顺序,请使用 DataFrame.reindex :

s = merged_clean.groupby('weeknum')['time_hour'].value_counts()
idx = sorted(s.index, key = lambda x: (int(x[0].split('-')[0]), x[1]))
s = s.reindex(idx)
<小时/>
print (s)
weeknum time_hour
2-8Jun 0.0 3
1.0 6
2.0 6
3.0 2
4.0 7
5.0 9
6.0 12
7.0 17
9-15Jun 0.0 3
1.0 8
3.0 4
4.0 7
5.0 12
6.0 14
16-22Jun 0.0 5
1.0 3
2.0 3
3.0 4
4.0 2
5.0 2
6.0 5
7.0 12
23-29Jun 0.0 11
1.0 3
2.0 3
3.0 3
4.0 1
5.0 9
6.0 6
7.0 19
Name: a, dtype: int64

关于python - pandas系列中的两列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57007275/

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