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

如何在Pandas DataFrame中按商品和店铺分组计算溢价列?

Pandas实现按商品+店铺分组的溢价计算及多维度扩展方案

一、实现基准价格与溢价列

1. 创建示例DataFrame

import pandas as pd

data = [
    ["bread", "normal", 2.0, "Lumbridge"],
    ["bread", "rare", 3.0, "Lumbridge"],
    ["bread", "legendary", 5.0, "Lumbridge"],
    ["bread", "normal", 1.5, "Varrock"],
    ["bread", "rare", 4.5, "Varrock"],
    ["bread", "legendary", 6.0, "Varrock"],
    ["bread", "normal", 3.0, "Yanille"],
    ["bread", "rare", 2.0, "Yanille"],
    ["bread", "legendary", 4.0, "Yanille"],
]

df = pd.DataFrame(data, columns=["商品", "品质", "价格", "店铺"])

2. 生成基准价格列

最直观高效的方式是先提取所有normal品质的基准价格数据,再通过合并关联回原表:

# 提取各商品+店铺对应的normal基准价格
base_prices = df[df["品质"] == "normal"][["商品", "店铺", "价格"]].rename(columns={"价格": "基准价格"})
# 合并回原DataFrame,确保每一行匹配对应商品+店铺的基准价
df = df.merge(base_prices, on=["商品", "店铺"], how="left")

3. 计算溢价列

直接用当前价格除以基准价格,按需保留小数位数:

# 计算溢价并保留两位小数
df["溢价"] = (df["价格"] / df["基准价格"]).round(2)

执行后即可得到与示例表格完全一致的结果。

二、多维度过滤的扩展实现

完全支持多维度(比如新增商品分类、品牌等列)的场景,只需要在分组/合并的关联键中加入新增维度即可。

举个新增「分类」列的示例:

# 带多维度的示例数据
data_extended = [
    ["bread", "food", "normal", 2.0, "Lumbridge"],
    ["bread", "food", "rare", 3.0, "Lumbridge"],
    ["apple", "food", "normal", 1.0, "Lumbridge"],
    ["apple", "food", "rare", 1.5, "Lumbridge"],
    ["sword", "weapon", "normal", 10.0, "Varrock"],
    ["sword", "weapon", "rare", 18.0, "Varrock"],
]

df_extended = pd.DataFrame(data_extended, columns=["商品", "分类", "品质", "价格", "店铺"])

# 提取基准价格时,关联键加入「分类」
base_prices_extended = df_extended[df_extended["品质"] == "normal"][["商品", "分类", "店铺", "价格"]].rename(columns={"价格": "基准价格"})
# 合并时用多维度关联
df_extended = df_extended.merge(base_prices_extended, on=["商品", "分类", "店铺"], how="left")
# 计算溢价逻辑不变
df_extended["溢价"] = (df_extended["价格"] / df_extended["基准价格"]).round(2)

这样就能实现按「商品+分类+店铺」多维度的基准价匹配与溢价计算,逻辑和单维度完全一致,可灵活扩展任意数量的分组维度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:53:16