如何以ID为标识对两张行数不同的Excel/CSV表取交集,避免手动操作?
两张表按Id取交集合并的可行实现方案
你需要对Excel、CSV两张表以Id为关联字段做内连接(取匹配行的交集),合并两张表的对应字段,以下是几种可直接落地的实现方法:
方案1:Excel Power Query(无代码,适合普通用户)
- 打开Excel,点击「数据」选项卡,选择「获取数据」->「自文件」,分别导入你的Excel表和CSV表,加载到Power Query编辑器
- 任选其中一张表,点击「合并查询」->「合并查询」,在弹出窗口中按以下步骤操作:
- 上部选择当前操作的表,点击选中Id字段作为关联键
- 下部选择另一张待合并的表,同样点击选中Id字段
- 连接种类选择「内连接(仅限匹配的行)」,点击确定
- 点击新生成的合并列右侧的展开按钮,勾选你需要保留的另一张表的字段,可按需取消勾选「使用原始列名作为前缀」
- 调整字段顺序后,点击「关闭并上载」即可将合并后的结果导出到Excel表格中
方案2:Python Pandas(适合批量处理、数据量较大的场景)
首先安装所需依赖:pip install pandas openpyxl
运行以下代码即可完成合并,替换代码中的文件路径为你本地文件的实际路径:
import pandas as pd # 读取两张源表 df_excel = pd.read_excel("你的表1路径.xlsx") df_csv = pd.read_csv("你的表2路径.csv") # 按Id字段做内连接,仅保留两张表Id匹配的行 df_merge_result = pd.merge(df_excel, df_csv, on="Id", how="inner") # 导出结果,可选择导出为Excel或CSV格式 df_merge_result.to_excel("合并结果.xlsx", index=False) # df_merge_result.to_csv("合并结果.csv", index=False)
方案3:SQLite命令行(适合熟悉SQL语法的用户)
- 先安装SQLite工具,将Excel表导出为CSV格式,打开命令行进入文件所在目录后执行
sqlite3进入交互界面 - 依次执行以下命令完成合并导出:
-- 导入CSV格式的两张表 .mode csv .import 表1.csv table_excel .import 表2.csv table_csv -- 执行内连接查询并将结果导出为CSV .mode csv .output 合并结果.csv SELECT * FROM table_excel INNER JOIN table_csv ON table_excel.Id = table_csv.Id; .output stdout
注意事项
- 若两张表存在Id以外的同名字段,合并时会自动添加后缀区分,你可以根据需求手动调整字段名
- 合并前请确保两张表的Id字段类型一致(比如同为数字类型或同为文本类型),避免因格式不一致导致匹配失败
内容的提问来源于stack exchange,提问作者Rachele Franceschini
相关产品推荐
相关产品推荐

