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

如何使用Python匹配Stock.csv数据为Sold.csv填充对应Item_No的价格字段

实现方案

推荐使用pandas库完成匹配,3万条数据处理仅需毫秒级耗时,操作逻辑简单不易出错。

前置依赖

如果环境未安装pandas,先执行安装命令:
pip install pandas

完整代码

import pandas as pd

# 1. 读取全量商品库存表
stock_df = pd.read_csv("Stock.csv", dtype={"Item_No": str})  # 若Item_No是纯数字可去掉dtype参数,加该参数是避免前后缀0、编码问题导致匹配失败
# 2. 读取待填充的已售商品表
sold_df = pd.read_csv("Sold.csv", dtype={"Item_No": str})

# 3. 按Item_No字段左关联,匹配对应价格,直接覆盖原有空的Price列
sold_df = sold_df.drop(columns=["Price"]).merge(
    stock_df[["Item_No", "Price"]],
    on="Item_No",
    how="left"
)

# 4. 导出填充完成的新文件,不会覆盖原文件
sold_df.to_csv("Sold_填充完成.csv", index=False, encoding="utf-8-sig")

代码说明

  • 关联逻辑使用左连接(how="left"),完全保留Sold.csv原有行顺序和所有Item_No记录,不会多删少加
  • 若存在Sold.csv里的Item_No在Stock.csv找不到的情况,对应Price会自动填充为空值,方便后续单独排查异常数据
  • 导出时用utf-8-sig编码,避免用Excel打开时出现乱码问题

备用纯Python方案(无需安装第三方库)

如果环境不允许安装pandas,可以用Python原生csv库实现:

import csv

# 先把库存表读成映射字典
price_map = {}
with open("Stock.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        price_map[row["Item_No"].strip()] = row["Price"].strip()

# 读取已售表,逐行填充价格
output_rows = []
with open("Sold.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        row["Price"] = price_map.get(row["Item_No"].strip(), "")
        output_rows.append(row)

# 导出填充完成的结果
with open("Sold_填充完成.csv", "w", encoding="utf-8-sig", newline="") as f:
    writer = csv.DictWriter(f, fieldnames=output_rows[0].keys())
    writer.writeheader()
    writer.writerows(output_rows)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:00:02