gpt4 book ai didi

python - 按多列排名并按另一列分组

转载 作者:行者123 更新时间:2023-12-01 07:04:05 26 4
gpt4 key购买 nike

我正在尝试根据 2 个不同列的值对按键列分组的数据框进行排名。

每一行代表具有给定键的路由。不同的路由可以共享相同的 key 。每条路线都有触地次数和总时间。如果触摸相同,我想按触摸和总时间排名。

考虑以下数据框

    route   key touches total_tt
0 R1 key1 1 10
1 R2 key1 2 20
2 R3 key1 2 23
3 R4 key1 3 20
4 R5 key1 3 20
5 R6 key1 3 30
6 R7 key2 3 30

我期望以下排名

    route   key touches total_tt    rank
0 R1 key1 1 10 1
1 R2 key1 2 20 2
2 R3 key1 2 23 3
3 R4 key1 3 20 4
4 R5 key1 3 20 4
5 R6 key1 3 30 5
6 R7 key2 3 30 1

最佳答案

sortgroupby + ngroup 用您的排名标记每个组。减去每个'key' 内的最小排名即可得出组内所需的排名。

cols = ['key', 'touches', 'total_tt']

df['rank'] = df.sort_values(cols).groupby(cols, sort=False).ngroup()
df['rank'] = df['rank'] - df.groupby('key')['rank'].transform('min') + 1
<小时/>

输出:

  route   key  touches  total_tt  rank
0 R1 key1 1 10 1
1 R2 key1 2 20 2
2 R3 key1 2 23 3
3 R4 key1 3 20 4
4 R5 key1 3 20 4
5 R6 key1 3 30 5
6 R7 key2 3 30 1

关于python - 按多列排名并按另一列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58512429/

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