表格内容补全
任务目标
- 本 Skill 用于:基于参考表格 B 的内容,自动补全目标表格 A 中的指定列
- 能力包含:支持 Excel/CSV 格式、精确匹配和包含匹配、覆盖原列或新增列、灵活的未匹配处理
- 触发条件:用户需要"根据一个表格补全另一个表格"、"关联两个表格数据"、"批量查找并替换内容"时
前置准备
- 依赖说明:脚本依赖 pandas 和 openpyxl,用于表格文件处理
- 文件准备:确保目标表格 A 和参考表格 B 已上传到当前目录(使用相对路径 ./ 引用)
操作步骤
标准流程
-
确认参数信息
- 向用户确认以下关键参数:
- 表格 A 和 B 的文件名(支持 .xlsx/.xls/.csv)
- A 表格中需要被匹配的列名
- B 表格中用于匹配的列名
- B 表格中用于取内容的补全列名
- 匹配方式(精确匹配/包含匹配)
- 保存方式(覆盖原单元格/新增列)
- 未匹配时的处理(保留原值/留空)
- 向用户确认以下关键参数:
-
调用补全脚本
- 脚本调用示例(精确匹配 + 新增列):
python scripts/table_completion.py \ --file_a ./data.xlsx \ --file_b ./reference.xlsx \ --a_match_col "产品代码" \ --b_match_col "代码" \ --b_fill_col "完整名称" \ --match_mode exact \ --save_mode new_column \ --new_col_name "补全后的名称" \ --unmatched_action empty \ --output_path ./completed_data.xlsx - 脚本调用示例(包含匹配 + 覆盖原列):
python scripts/table_completion.py \ --file_a ./products.csv \ --file_b ./keywords.csv \ --a_match_col "名称" \ --b_match_col "关键词" \ --b_fill_col "扩展描述" \ --match_mode contain \ --save_mode overwrite \ --unmatched_action keep \ --output_path ./completed_products.csv
- 脚本调用示例(精确匹配 + 新增列):
-
获取结果
- 从脚本输出中提取:
- 输出文件路径(供用户下载)
- 统计信息(匹配成功/失败行数)
- 将结果反馈给用户
- 从脚本输出中提取:
参数说明
| 参数 | 必填 | 可选值 | 说明 | |------|------|--------|------| | --file_a | 是 | 文件路径 | 目标表格 A 的路径(将被补全的表格) | | --file_b | 是 | 文件路径 | 参考表格 B 的路径(提供补全内容的表格) | | --a_match_col | 是 | 列名字符串 | A 表格中用于匹配的列名 | | --b_match_col | 是 | 列名字符串 | B 表格中用于匹配的列名 | | --b_fill_col | 是 | 列名字符串 | B 表格中提供补全内容的列名 | | --match_mode | 否 | exact/contain | 匹配模式:精确匹配(默认)/包含匹配 | | --save_mode | 否 | overwrite/new_column | 保存方式:覆盖原单元格(默认)/新增列 | | --new_col_name | 否 | 字符串 | 新增列的列名(仅 save_mode=new_column 时需要) | | --unmatched_action | 否 | keep/empty | 未匹配处理:保留原值(默认)/留空 | | --output_path | 是 | 文件路径 | 输出文件的保存路径 |
使用示例
示例1:产品代码精确匹配补全
- 场景/输入:产品数据表缺少完整产品名称,需要根据产品代码从参考表中补充
- A 文件:./products.xlsx(包含"产品代码"列)
- B 文件:./product_reference.xlsx(包含"代码"和"完整名称"列)
- 预期产出:在 A 表格中新增"补全后的名称"列,填充匹配到的完整名称
- 关键要点:
- 使用精确匹配确保代码完全一致
- 新增列保留原始数据,方便对比验证
- 未匹配的单元格留空,便于后续人工处理
示例2:关键词包含匹配补全
- 场景/输入:商品名称中包含品牌关键词,需要从品牌表中提取品牌描述
- A 文件:./items.csv(包含"商品名称"列)
- B 文件:./brand_info.csv(包含"品牌关键词"和"品牌描述"列)
- 预期产出:用匹配到的品牌描述覆盖 A 表格的"商品名称"列
- 关键要点:
- 使用包含匹配,只要商品名称包含品牌关键词即可
- 覆盖原列直接替换内容
- 保留未匹配的原值,避免数据丢失
示例3:数据清洗与标准化
- 场景/输入:旧系统导出的数据表中包含缩写代码,需要从标准映射表中补全全称
- A 文件:./legacy_data.xlsx(包含"状态代码"列)
- B 文件:./status_mapping.xlsx(包含"代码"和"状态全称"列)
- 预期产出:新增"标准化状态"列,填充对应的全称
- 关键要点:
- 处理前后空格和大小写问题
- 使用精确匹配确保准确性
- 统计未匹配的代码,指导数据修正
资源索引
- 脚本:见 scripts/table_completion.py(用途:执行表格补全的核心逻辑,支持多种匹配模式和保存方式)
注意事项
- 文件格式:自动识别 .xlsx/.xls/.csv 格式,输出文件格式与输入文件 A 保持一致
- 空值处理:自动去除字符串列的首尾空格,处理 NaN/空值,确保匹配准确
- 数据类型:匹配时会统一转为字符串处理,避免数字和字符串不匹配的问题
- 性能优化:
- 精确匹配使用字典查找,速度快(适合大数据量)
- 包含匹配需要遍历查找,速度较慢(建议单表不超过 10000 行)
- 大文件处理建议先测试小样本,确认逻辑正确后再处理全量
- 多匹配处理:如果匹配到多个结果,默认取第一个匹配的行
- 错误处理:脚本会返回详细的错误信息,包括列不存在、文件格式不支持等情况
Scan to contact