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

如何用Python Pandas生成促销规划用例的推理数据集?

用Pandas生成推理数据集的实现方案

完全可以用Pandas实现这个需求,核心是通过生成笛卡尔积覆盖所有组合,具体步骤和代码如下:

步骤说明

  • 生成指定日期范围内的所有日期
  • 准备需要覆盖的所有Product ID列表(可从历史数据中提取唯一值)
  • 生成促销类型与折扣百分比的全组合
  • 对日期、Product ID、促销组合三者做笛卡尔积,得到完整的推理数据集
  • 补充Promotion flag字段(按折扣判断:折扣>0时为1,否则为0,对应促销/非促销标识)

代码实现

import pandas as pd

# 1. 定义输入参数
date_start = "2023-03-17"
date_end = "2023-03-27"
promo_types = ["bd", "pd", "ld"]
discount_percents = [0, 5, 10]
# 示例Product ID列表,实际可从历史数据提取唯一值
product_ids = ["asin_001", "asin_002", "asin_003"]

# 2. 生成日期序列
dates = pd.date_range(start=date_start, end=date_end, freq="D").to_frame(name="Date")

# 3. 生成促销类型与折扣的全组合
promo_discount = pd.MultiIndex.from_product(
    [promo_types, discount_percents],
    names=["Promotion type", "discount percent"]
).to_frame(index=False)

# 4. 生成三者的笛卡尔积
products = pd.DataFrame({"Product ID": product_ids})
df = dates.merge(products, how="cross")
df = df.merge(promo_discount, how="cross")

# 5. 添加Promotion flag字段
df["Promotion flag"] = df["discount percent"].apply(lambda x: 1 if x > 0 else 0)

# 6. 补充current price(示例用字典匹配,实际可关联产品主数据表)
price_map = {"asin_001": 99.9, "asin_002": 149.9, "asin_003": 79.9}
df["current price"] = df["Product ID"].map(price_map)

# 调整列顺序匹配模型输入(可选)
df = df[["Date", "Product ID", "Promotion flag", "Promotion type", "discount percent", "current price"]]

print(df.head())

关键提示

  • merge(how="cross")是Pandas 1.2.0+支持的笛卡尔积合并方式,低版本可改用pd.MultiIndex.from_product生成全索引再转成DataFrame
  • 若Product ID数量庞大,全组合会生成海量数据,可根据实际需求分批处理
  • current price需结合你的产品数据匹配,示例仅为模拟逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:55:25