我正在尝试在pandas中对列(col 1)
进行排名。如果存在平局,我想查看另一列(col 2)
仅针对这些记录并执行平局判断。如果它们在该列中相同,我想只是随机分配排名,但每行必须具有唯一的排名。
示例:
col1 | col 2 | Rank
20 | 3 | 3
22 | 2 | 2
22 | 2.5 | 1
3 | 1 | 4
3 | 1 | 5
答案 0 :(得分:6)
df['Rank'] = df.sort_values(by=['col1', 'col2'], ascending=False) \
.reset_index() \
.sort_values('index') \
.index + 1
此代码执行以下步骤:
level_0
。如果您同时拥有index
和level_0
,代码将抛出异常。