如何在DataFrame中按Fruit分组对percentage排序新增排名列new_column
实现分组内排名新增列的方法
你可以直接使用 Pandas 内置的分组+排名方法实现需求,具体步骤如下:
核心依赖
确保你已经正确安装并导入了 Pandas 库:
import pandas as pd
完整实现代码
1. (可选)构造示例测试数据
df = pd.DataFrame({ 'Fruit': ['苹果', '苹果', '苹果', '香蕉', '香蕉', '橙子'], 'percentage': [85, 92, 85, 78, 95, 90] })
2. 核心逻辑实现
df['new_column'] = df.groupby('Fruit')['percentage'].rank( ascending = False, method = 'dense' ).astype(int)
参数说明
你可以根据实际业务对排名规则的要求,调整method参数的取值:
method='dense':相同百分比的数值排名相同,后续排名连续不跳号(比如两个并列第2,下一名是第3)method='min':相同百分比的数值排名相同,后续排名跳号(比如两个并列第2,下一名是第4)method='first':相同百分比的数值按出现先后顺序排不同名次,无并列排名
运行效果示例
执行代码后得到的结果如下:
| Fruit | percentage | new_column |
|---|---|---|
| 苹果 | 85 | 2 |
| 苹果 | 92 | 1 |
| 苹果 | 85 | 2 |
| 香蕉 | 78 | 2 |
| 香蕉 | 95 | 1 |
| 橙子 | 90 | 1 |
内容的提问来源于stack exchange,提问作者GDog
相关产品推荐
相关产品推荐

