如何使用Python比对源表与目标表的列顺序差异
Python比对两张表列顺序、提取顺序不匹配列的实现方案
前置依赖
处理结构化表格优先用pandas,先安装依赖:pip install pandas
实现逻辑
- 先提取两张表各自的列名列表
- 过滤出两张表共有的列(独有列不存在顺序比对的基础,直接排除)
- 记录每个共有列在两张表中的位置索引
- 筛出位置索引不一致的列,输出结果即可
完整代码
import pandas as pd # 1. 读取两张表,根据自己的文件格式替换读取方法,读excel用pd.read_excel即可 df_table1 = pd.read_csv("你的表1文件路径.csv") df_table2 = pd.read_csv("你的表2文件路径.csv") # 提取列名列表 cols_table1 = df_table1.columns.tolist() cols_table2 = df_table2.columns.tolist() # 2. 筛选共有列 common_columns = [col for col in cols_table1 if col in cols_table2] # 3. 构建列名-位置索引的映射 col_pos1 = {col: idx for idx, col in enumerate(cols_table1)} col_pos2 = {col: idx for idx, col in enumerate(cols_table2)} # 4. 收集顺序不匹配的列信息 mismatch_result = [] for col in common_columns: if col_pos1[col] != col_pos2[col]: mismatch_result.append({ "列名": col, "表1中的位置": col_pos1[col] + 1, # +1适配人工从1开始计数的习惯,不需要可删除 "表2中的位置": col_pos2[col] + 1 }) # 5. 格式化输出结果 result_df = pd.DataFrame(mismatch_result) print("=== 顺序不匹配的列清单 ===") print(result_df) # 可选:查看两边独有的列 only_in_t1 = [col for col in cols_table1 if col not in cols_table2] only_in_t2 = [col for col in cols_table2 if col not in cols_table1] print("\n=== 表1独有列 ===") print(only_in_t1) print("\n=== 表2独有列 ===") print(only_in_t2)
效果示例
比如两张表的列分别为:
- 表1列顺序:用户ID、姓名、年龄、手机号、注册时间
- 表2列顺序:用户ID、年龄、姓名、手机号、最后登录时间
运行代码后输出的顺序不匹配列:
| 列名 | 表1中的位置 | 表2中的位置 |
|---|---|---|
| 姓名 | 2 | 3 |
| 年龄 | 3 | 2 |
独有的列「注册时间(表1)」「最后登录时间(表2)」不会被计入顺序不匹配结果。
内容的提问来源于stack exchange,提问作者Alia
相关产品推荐
相关产品推荐

