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

如何匹配两个不同Excel表的产品编号并提取行数据生成新汇总表

原有代码问题点

你的代码跑不通、结果不符合预期,核心是3个问题:

  • 读取Excel时设置了index_col=0,把Product number列转成了索引,后续merge时指定on='Product number'找不到对应列直接报错
  • 新旧两个表都有Name列,merge后会自动生成带_x(新表)、_y(旧表)后缀的同名列,原有rename逻辑没处理这个后缀,会触发列不存在的报错
  • 没有做新增/缺失产品的判断逻辑,也没匹配你要的字段取值规则:共有产品取旧表的名称、新增产品旧价格和新价格一致、旧表独有的产品只提示不进汇总表
修正后可直接运行的代码
import pandas as pd

# 读取数据时直接给列重命名,避免同名列冲突,不提前设置索引
new_data = pd.read_excel(
    'new_data.xlsx',
    usecols=[0, 1, 2],
    names=['Product number', 'new_name', 'New price'],
    engine='openpyxl'
)
old_data = pd.read_excel(
    'old_data.xlsx',
    usecols=[0, 1, 2],
    names=['Product number', 'old_name', 'Old price'],
    engine='openpyxl'
)

def format_data():
    # 外连接合并所有数据,indicator参数自动标记每条数据来自哪个表
    df = pd.merge(new_data, old_data, on='Product number', how='outer', indicator=True)

    # 输出两类提示
    # 仅在新表存在的 = 新增产品
    new_products = df[df['_merge'] == 'left_only']['Product number'].tolist()
    for pid in new_products:
        print(f"提示2:产品ID {pid}为新增产品")
    # 仅在旧表存在的 = 新数据缺失
    missing_products = df[df['_merge'] == 'right_only']['Product number'].tolist()
    for pid in missing_products:
        print(f"提示1:产品ID {pid}在新数据文件中缺失")

    # 处理汇总表:过滤掉新表缺失的产品(仅保留新表存在的条目)
    final_df = df[df['_merge'] != 'right_only'].copy()
    # 产品名优先取旧表名称,旧表没有(新增产品)取新表名称
    final_df['Name of product'] = final_df['old_name'].fillna(final_df['new_name'])
    # 新增产品的旧价格为空,填充为对应新价格
    final_df['Old price'] = final_df['Old price'].fillna(final_df['New price'])
    # 按要求重命名、调整列顺序
    final_df = final_df.rename(columns={'Product number': 'Product ID'})
    final_df = final_df[['Product ID', 'Name of product', 'New price', 'Old price']].reset_index(drop=True)

    # 打印结果、导出到Excel
    print(final_df)
    final_df.to_excel('updated_table.xlsx', index=False)

if __name__ == "__main__":
    format_data()
运行效果说明
  • 控制台会按你要求输出两类提示信息
  • 生成的updated_table.xlsx结构和你给出的目标表完全一致:共有产品保留旧表的产品名称,新增产品自动填充名称和旧价格,新表缺失的产品不会出现在汇总表里
  • 导出时关闭了索引列,不会生成多余的无用列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:24:21