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

如何在Pandas DataFrame中按lane id获取最低报价及对应供应商

解决方案

下面给你几种可行的方法,实现按lane_id分组后提取每组最低quoted_rates及对应供应商:

方法一:分组取索引再提取行

这种方法直接定位每组最低价的行索引,精准提取所需数据:

# 按lane_id分组,获取每组quoted_rates最小的行索引
min_row_indices = df.groupby('lane_id')['quoted_rates'].idxmin()
# 根据索引提取对应行,保留需要的列
result_df = df.loc[min_row_indices, ['lane_id', 'supplier_name', 'quoted_rates']]
# 重置索引让结果更规整
result_df = result_df.reset_index(drop=True)

方法二:排序后去重

如果需要更直观的排序逻辑,先按分组和价格排序,再保留每组第一条数据:

# 先按lane_id升序、quoted_rates升序排序
sorted_data = df.sort_values(by=['lane_id', 'quoted_rates'], ascending=[True, True])
# 按lane_id去重,保留每组第一行(即最低价的行)
result_df = sorted_data.drop_duplicates(subset='lane_id', keep='first')[['lane_id', 'supplier_name', 'quoted_rates']]

方法三:标记组内最低价后筛选

如果存在多个供应商报出相同最低价的情况,这种方法可以保留所有符合条件的行:

# 新增列标记每组的最低报价
df['group_min_rate'] = df.groupby('lane_id')['quoted_rates'].transform('min')
# 筛选出报价等于组内最低价的行
result_df = df[df['quoted_rates'] == df['group_min_rate']][['lane_id', 'supplier_name', 'quoted_rates']]
# 重置索引
result_df = result_df.reset_index(drop=True)

注意:如果你的lane_id列名有大小写差异(比如Lane ID),记得替换成实际列名;方法一和二默认只保留每组第一个最低价的行,方法三会保留所有同价的供应商。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:43:12