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

如何在Pandas DataFrame中按分组新增price对应的rank排名列

Pandas 分组排名解决方案

直接用Pandas内置的groupby + rank组合即可实现需求,核心代码如下:
df['rank'] = df.groupby(['name', 'country'])['price'].rank(ascending=False, method='min').astype(int)

参数说明

  • ascending=False:代表价格越高排名越靠前,若需要价格越低排名越靠前,修改为True即可
  • method='min':相同价格的条目排名一致,下一个名次跳空(如两个第1名,下一个名次为3),可根据需求调整method取值:
    • 要同值同排名、名次连续不跳空,使用method='dense'
    • 要同值按出现顺序分配不同排名,使用method='first'

完整可运行示例

import pandas as pd

# 示例数据,可替换为你自己的DataFrame
data = {
    'name': ['商品1', '商品1', '商品2', '商品2', '商品1', '商品2'],
    'country': ['中国', '中国', '美国', '美国', '美国', '美国'],
    'price': [299, 199, 399, 399, 499, 299]
}
df = pd.DataFrame(data)

# 计算分组排名
df['rank'] = df.groupby(['name', 'country'])['price'].rank(ascending=False, method='min').astype(int)

# 输出结果
print(df)

运行输出示例

namecountrypricerank
商品1中国2991
商品1中国1992
商品2美国3991
商品2美国3991
商品1美国4991
商品2美国2993

内容的提问来源于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 17:48:04