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

Pandas如何比较单行列值与同组多值并标记最优项

Pandas 同类别最优标记实现方案

核心实现代码

import pandas as pd

# 示例数据集
example = pd.DataFrame({    
    "values": [1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8,8,8,8,8, 9 ],
    "prices": [1.1, 2.2, 3.31, 3.32, 3.33, 4.1, 4.2, 5.1, 6.1, 6.2, 7.1, 7.2, 7.3, 8.1, 8.2, 8.3, 8.4, 8.5, 9.1]
})

# 标记同组最小prices为最优
example["is_best"] = example["prices"].eq(example.groupby("values")["prices"].transform("min")).astype(int)

逻辑说明

  • 该方案完全兼容存在其他无关列的场景,不会修改除is_best外的任何列数据
  • groupby("values")["prices"].transform("min")会按values列分组计算每组prices的最小值,返回与原数据集长度完全一致的序列,每个位置对应所属组的最小价格
  • eq()方法匹配当前行价格是否等于组内最小值,返回布尔值,通过astype(int)直接转为1/0标记

扩展适配

如果同组存在多个相同最小价格,仅需标记第一个出现的为最优,可调整为以下逻辑:

example["is_best"] = (example.groupby("values")["prices"].rank(method="first") == 1).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:08