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

如何用Python pandas比对两个Excel文件的单据税额数据并输出结果

Excel单据税额比对实现方案

前置依赖安装

执行以下命令安装所需库:
pip install pandas openpyxl

完整实现代码

import pandas as pd

# 1. 读取两个Excel文件,按需替换为实际字段名
df_2a = pd.read_excel("2A.xlsx", usecols=["单据号", "对应税额"])
df_pr = pd.read_excel("采购登记台账Purchase Register.xlsx", usecols=["单据号", "对应税额"])

# 数据预处理:消除空格、浮点数精度导致的比对误差
df_2a["单据号"] = df_2a["单据号"].astype(str).str.strip()
df_2a["对应税额"] = df_2a["对应税额"].round(2)
df_pr["单据号"] = df_pr["单据号"].astype(str).str.strip()
df_pr["对应税额"] = df_pr["对应税额"].round(2)

# 2. 外连接合并两个表,标记数据来源
df_merge = pd.merge(
    df_2a, df_pr,
    on="单据号",
    how="outer",
    suffixes=("_2a", "_pr"),
    indicator=True
)

# 3. 按规则分类
# 3.1 Exact:两边都存在且税额一致
df_exact = df_merge[
    (df_merge["_merge"] == "both") & (df_merge["对应税额_2a"] == df_merge["对应税额_pr"])
][["单据号", "对应税额_2a"]].rename(columns={"对应税额_2a": "对应税额"})

# 3.2 Mismatch:两边都存在但税额不一致
df_mismatch = df_merge[
    (df_merge["_merge"] == "both") & (df_merge["对应税额_2a"] != df_merge["对应税额_pr"])
][["单据号", "对应税额_2a", "对应税额_pr"]]

# 3.3 Addition in 2A:仅2A存在
df_add_2a = df_merge[df_merge["_merge"] == "left_only"][["单据号", "对应税额_2a"]].rename(columns={"对应税额_2a": "对应税额"})

# 3.4 Addition in PR:仅PR存在
df_add_pr = df_merge[df_merge["_merge"] == "right_only"][["单据号", "对应税额_pr"]].rename(columns={"对应税额_pr": "对应税额"})

# 4. 输出到新Excel,每个类别对应一个工作表
with pd.ExcelWriter("比对结果.xlsx", engine="openpyxl") as writer:
    df_exact.to_excel(writer, sheet_name="Exact", index=False)
    df_mismatch.to_excel(writer, sheet_name="Mismatch", index=False)
    df_add_2a.to_excel(writer, sheet_name="Addition in 2A", index=False)
    df_add_pr.to_excel(writer, sheet_name="Addition in PR", index=False)

注意事项

  • 如果你的表中单据号、对应税额的实际字段名和示例不同,替换读取文件时usecols参数里的字段名即可
  • 若需要保留两个表的其他字段,修改usecols参数传入需要的字段名,合并时对应调整取值逻辑即可
  • 运行完成后会在当前目录生成比对结果.xlsx文件,四个分类分别存放在不同工作表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:06:05