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

Pandas DataFrame筛选唯一品牌且得分最高的前3款汽车实现方法

品牌去重取Top3汽车实现方案

问题原因

原代码存在两处明显缺陷:

  1. 未做品牌维度去重,直接排序取数导致同一品牌的多条记录被同时纳入结果
  2. 多余的np.abs计算对正得分场景无意义,且默认升序排序取后3位的逻辑也未匹配结果顺序要求

实现代码

import pandas as pd

df = pd.DataFrame({ 
    'car' : ['brand1_2020', 'brand2', 'brand3', 'brand1_2018', 'brand4'],
    'score' : [5.2, 4.9, 5.0, 5.1, 4.1]
})

# 提取统一品牌名
df['brand'] = df['car'].str.split('_').str[0]

# 取每个品牌得分最高的记录索引
best_per_brand_idx = df.groupby('brand')['score'].idxmax()

# 筛选后按得分降序取前3,再按升序排列得到预期顺序结果
cars_filtered = df.loc[best_per_brand_idx] \
                 .sort_values('score', ascending=False) \
                 .head(3) \
                 .sort_values('score')['car'] \
                 .tolist()

print(cars_filtered)

运行输出:

['brand2', 'brand3', 'brand1_2020']

逻辑说明

  • 提取品牌字段:通过字符串切分规则,将品牌名_年份格式的car字段拆分为独立的品牌维度
  • 单品牌最优筛选:按品牌分组后用idxmax直接定位每个品牌得分最高的记录,避免同一品牌多条数据干扰
  • 排序取数:先按得分降序筛选出最高的3条记录,再调整为升序排列即可完全匹配预期输出顺序,如果需要按得分从高到低输出,去掉最后一次升序排序的步骤即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:05