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

基于Pandas实现逐行最低价及对应供应商分析需求

Pandas实现逐行筛选最低价供应商并生成采购用DataFrame

实现方案

1. 基础实现(单最低价供应商)

直接利用Pandas内置方法快速计算最低价并匹配对应供应商:

import pandas as pd

# 示例输入DataFrame(可替换为你的实际数据)
data = {
    "CODBAR": ["001", "002", "003"],
    "DESCRI": ["苹果", "香蕉", "橙子"],
    "PRICE_PROVIDER1": [5.2, 3.1, 4.5],
    "PRICE_PROVIDER2": [4.8, 3.3, 4.2],
    "PRICE_PROVIDER3": [5.0, 2.9, 4.7]
}
df = pd.DataFrame(data)

# 提取所有供应商价格列
price_cols = [col for col in df.columns if col.startswith("PRICE_PROVIDER")]

# 新增最低价和对应供应商列
df["LOWEST_PRICE"] = df[price_cols].min(axis=1)
# 从列名中剥离出供应商名称
df["BEST_PROVIDER"] = df[price_cols].idxmin(axis=1).str.replace("PRICE_", "")

# 生成采购用的精简DataFrame
purchase_order_df = df[["CODBAR", "DESCRI", "LOWEST_PRICE", "BEST_PROVIDER"]].copy()

2. 处理多供应商同价的情况

如果存在多个供应商报价相同且均为最低价,可自定义逻辑返回所有符合条件的供应商:

def get_all_best_providers(row):
    min_price = row[price_cols].min()
    # 筛选出所有报价等于最低价的供应商
    matched_providers = [col.replace("PRICE_", "") for col in price_cols if row[col] == min_price]
    return ", ".join(matched_providers)

# 替换原有的供应商列生成逻辑
df["BEST_PROVIDER"] = df.apply(get_all_best_providers, axis=1)

3. 输出结果示例

运行基础实现代码后,purchase_order_df的输出如下:

CODBAR DESCRI  LOWEST_PRICE BEST_PROVIDER
0    001    苹果           4.8    PROVIDER2
1    002    香蕉           2.9    PROVIDER3
2    003    橙子           4.2    PROVIDER2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:50:30