[英]Rank by multiple columns grouping by another column
我正在嘗試根據 2 個不同列的值按鍵列對 dataframe 分組進行排名。
每行代表具有給定鍵的路線。 不同的路由可以共享相同的密鑰。 每條路線都有多次接觸和總時間。 如果觸摸相同,我想按觸摸和總時間排名。
考慮以下 dataframe
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
sort
和groupby
+ ngroup
到 label 每個組與您的排名。 減去每個'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
Output:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.