You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python分组排名问题:相同值获随机排名而非降序

分组内重复值的稳定排名解决方法

你用df['Rank']=df.groupby(["Id"])[' value'].rank(ascending=0)做分组排名时,遇到重复value就出现随机排名,是因为rank()默认用随机逻辑处理平局。调整method参数就能解决:

几种实用的排名规则:

  • 按原顺序给重复值排先后:如果希望相同value的行按数据原本的出现顺序获得连续排名(不随机),用method='first':
    df['Rank'] = df.groupby(["Id"])['value'].rank(ascending=0, method='first')
    
  • 重复值共享同一排名(无跳跃):想让相同value的行拿到一样的排名,后续排名连续不跳过,用method='dense':
    df['Rank'] = df.groupby(["Id"])['value'].rank(ascending=0, method='dense')
    
  • 重复值取组内最小/最大排名:
    • 相同value都取组内最小排名:method='min'
    • 相同value都取组内最大排名:method='max'
      示例代码:
    df['Rank'] = df.groupby(["Id"])['value'].rank(ascending=0, method='min')
    

注意点

  • ascending=0等同于降序排名,要升序的话改成ascending=True即可;
  • 你代码里列名写的' value'带空格,要和DataFrame实际列名一致,不然会找不到列报错。

内容的提问来源于stack exchange,提问作者user20663141

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:45:33