如何按表1的Id列顺序合并列头相同的两个CSV/Excel表格
CSV/Excel 两表合并操作指南
合并前提
- 两个待合并的表格列名、列顺序必须完全对齐
- 合并完成的新表,行顺序严格和表1的Id列原有排序保持一致
实现方式
方式一:Python 脚本(适合数据量大、需要反复操作的场景)
先安装需要的依赖库,在命令行执行:pip install pandas openpyxl
之后运行下面的脚本,把文件路径替换成你自己的本地文件路径即可:
import pandas as pd # 读文件:如果是CSV格式,把read_excel换成pd.read_csv即可 df_table1 = pd.read_excel("你的表1文件路径.xlsx") df_table2 = pd.read_excel("你的表2文件路径.xlsx") # 先校验列头是否一致,不一致直接抛出提示 if list(df_table1.columns) != list(df_table2.columns): raise Exception("两个表列头不匹配,请先调整列名、列顺序再运行") # 记录表1原有Id顺序 table1_id_sort = df_table1["Id"].tolist() # 拼接两个表的全部数据 merged_data = pd.concat([df_table1, df_table2], ignore_index=True) # 按照表1的Id顺序重排,表2独有的Id对应的行会统一放在结果末尾 merged_data["temp_sort_tag"] = merged_data["Id"].apply(lambda x: table1_id_sort.index(x) if x in table1_id_sort else len(table1_id_sort)) merged_data = merged_data.sort_values(by="temp_sort_tag").drop(columns=["temp_sort_tag"]).reset_index(drop=True) # 导出结果,要存CSV就把to_excel换成to_csv merged_data.to_excel("合并完成结果.xlsx", index=False)
注意:运行脚本前请先关闭正在打开的目标Excel文件,否则会触发权限报错
如果不需要保留表2中独有的Id行,在拼接完数据之后加一行筛选逻辑即可:merged_data = merged_data[merged_data["Id"].isin(table1_id_sort)]
方式二:Excel 手动操作(适合小数据量、不想写代码的场景)
- 同时打开两个待合并文件,逐列核对列名、列顺序,有差异的先拖拽调整列顺序、修改列名,保证两个表表头完全一致
- 切到表2,选中除表头行之外的所有有效数据,复制后粘贴到表1现有数据的最后一行下方
- 选中表1全部数据区域,点击顶部菜单栏「数据」-「排序」,排序关键字选
Id列,次序选择「自定义序列」 - 在弹出的自定义序列窗口,按照表1原本的Id从上到下的顺序依次输入Id值,导入序列后确认排序,就能得到符合顺序要求的合并表
示例参考
- 文件/表1:

- 文件/表2:

提示:如果两个表存在重复Id的行,上述操作会默认保留全部重复行,需要去重的话选中数据后点「数据」-「删除重复值」,选择Id列作为判断依据即可。
内容的提问来源于stack exchange,提问作者Juan Manuel Luque
相关产品推荐
相关产品推荐

