You need to enable JavaScript to run this app. 使用Python对比两个Excel并按差异插入对应空行的方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用Python对比两个Excel并按差异插入对应空行的方案咨询

实现Excel行对齐的Python解决方案

依赖pandas和openpyxl两个库,先执行安装:

pip install pandas openpyxl

实现逻辑

以行的唯一标识(主键,可为单列或多列组合)作为匹配依据,先收集两个表所有出现过的主键并保留先后顺序,再对两个表分别按完整主键序列重新索引,缺失的行自动填充空白。

代码示例

import pandas as pd

# 1. 读取文件,替换为你的实际文件路径
old_df = pd.read_excel("Old_excel.xlsx")
new_df = pd.read_excel("New_excel.xlsx")

# 2. 配置匹配主键,单列填字符串,多列填列名列表,例如 ['姓名','手机号']
primary_key = "id"

# 3. 收集所有出现过的主键,去重保留首次出现的先后顺序
all_keys = []
seen_keys = set()
for key in old_df[primary_key]:
    if key not in seen_keys:
        seen_keys.add(key)
        all_keys.append(key)
for key in new_df[primary_key]:
    if key not in seen_keys:
        seen_keys.add(key)
        all_keys.append(key)

# 4. 对两个表按完整主键序列对齐,缺失行填充空白
old_df_indexed = old_df.set_index(primary_key)
new_df_indexed = new_df.set_index(primary_key)
aligned_old = old_df_indexed.reindex(all_keys).reset_index()
aligned_new = new_df_indexed.reindex(all_keys).reset_index()

# 5. 保存结果,可根据需要修改输出路径和sheet名
with pd.ExcelWriter("aligned_result.xlsx") as writer:
    aligned_old.to_excel(writer, sheet_name="对齐后Old表", index=False)
    aligned_new.to_excel(writer, sheet_name="对齐后New表", index=False)

注意事项

  • 若你的表格没有天然唯一主键,可将primary_key配置为多列组合,后续逻辑无需修改
  • 上述代码仅保留单元格内容,若需要保留原Excel的格式、公式等,可以基于openpyxl逐行操作,逻辑和上述一致:先整理出完整的行顺序,再按顺序匹配两个表的行,缺失的位置插入空行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:45:03