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

如何使用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中的位置
姓名23
年龄32

独有的列「注册时间(表1)」「最后登录时间(表2)」不会被计入顺序不匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:54:22