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

如何编写代码将符合调价条件的商品数据同步至Sheet B?

用Python Pandas实现Excel商品价格筛选与追加

我来分享一个用Python Pandas库实现需求的方案,这个库处理表格数据非常顺手,能轻松完成数据比对、筛选和写入操作。

实现步骤说明

首先我们需要把零散的new_price数组转换成结构化的表格,然后和Sheet A的原价做关联,接着判断涨幅条件,最后把符合要求的商品追加到Sheet B中。

完整代码示例

import pandas as pd
from openpyxl import load_workbook

# 1. 定义给定的新价格数组
new_price = [{"a": 1.5}, {"b": 2.1}, {"c": 3.6}]

# 2. 将new_price数组转换为DataFrame(结构化表格)
# 先把数组拆成(item, new_price)的元组列表,再转成DataFrame
new_price_list = [(k, v) for item in new_price for k, v in item.items()]
new_price_df = pd.DataFrame(new_price_list, columns=["item", "new_price"])

# 3. 读取Excel文件中的Sheet A和Sheet B
# 假设Excel文件名为products.xlsx,根据实际文件名修改
excel_file = "products.xlsx"
sheet_a_df = pd.read_excel(excel_file, sheet_name="Sheet A")
sheet_b_df = pd.read_excel(excel_file, sheet_name="Sheet B")

# 4. 合并Sheet A和new_price的数据,关联商品item
merged_df = pd.merge(sheet_a_df, new_price_df, on="item", how="inner")

# 5. 筛选符合条件的商品:涨幅≥20% 且 不在Sheet B中
# 计算涨幅比例
merged_df["price_increase_ratio"] = (merged_df["new_price"] - merged_df["old_price"]) / merged_df["old_price"]
# 筛选条件
condition = (merged_df["price_increase_ratio"] >= 0.2) & (~merged_df["item"].isin(sheet_b_df["item"]))
filtered_items = merged_df[condition][["item", "new_price"]]

# 6. 将筛选出的商品追加到Sheet B中
updated_sheet_b = pd.concat([sheet_b_df, filtered_items], ignore_index=True)

# 7. 将更新后的Sheet B写回Excel文件
# 使用openpyxl引擎来保留原文件的其他工作表
with pd.ExcelWriter(excel_file, engine="openpyxl", mode="a", if_sheet_exists="replace") as writer:
    updated_sheet_b.to_excel(writer, sheet_name="Sheet B", index=False)

print("Sheet B已更新,结果符合预期!")

代码逻辑解释

  • 数组转DataFrame:把原来的字典数组转换成标准的表格结构,方便后续和Excel表格做关联操作。
  • 数据合并:通过item列关联Sheet A的原价和新价格数组,这样能直接计算每个商品的涨幅。
  • 条件筛选:
    1. 计算涨幅比例:(新价-原价)/原价,判断是否≥20%;
    2. 用isin方法判断商品是否已经存在于Sheet B中,取反得到不在Sheet B的商品;
  • 追加写入:用concat合并原有Sheet B数据和筛选出的新数据,然后用ExcelWriter写回Excel,注意使用replace模式来覆盖原Sheet B,同时保留其他工作表。

验证结果

执行代码后,Sheet B的数据会变成:

itemnew_price
c3.6
a1.5

完全符合预期:商品a的涨幅为50%(≥20%)且不在原Sheet B中,所以被追加;商品b涨幅仅5%,不符合条件;商品c已存在于Sheet B,不会重复添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:44:45