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

Pandas DataFrame按name、country分组实现同价同排名问题

你的现有代码存在两处不符合需求的问题:

  1. 分组字段仅指定了name,没有包含要求的country字段,分组逻辑不匹配需求
  2. rank()方法默认method='average',会对相同值计算平均排名,因此相同价格的商品无法拿到相同的整数排名

要实现相同价格获得相同排名的效果,使用method='min'参数即可,该参数会将相同值的排名统一设为该组值中的最小排名,符合你要的rank_2列效果:

# ascending=True表示价格越低排名越高,如需价格越高排名越高改为ascending=False
df['rank_2'] = df.groupby(['name', 'country'])['price'].rank(method='min', ascending=True).astype(int)

如果你需要排名连续不跳号(比如6个排名1的商品后,下一个不同价格的商品排名为2而非7),可将method参数改为'dense'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:54:04