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

如何用Pandas对比两个XLSX的DataFrame并验证分类一致性

解决方案(基于Python Pandas)

步骤1:读取Excel并转换Siret为Siren格式

先把两个Excel文件读入DataFrame,然后将Df2的Siret转为字符串类型(避免数字格式丢失前导零),提取前9位得到和Df1一致的Siren:

import pandas as pd

# 读取文件,注意指定Siret为字符串类型防止前导零丢失
df1 = pd.read_excel('你的文件1路径.xlsx')
df2 = pd.read_excel('你的文件2路径.xlsx', dtype={'Siret': str})

# 从Siret提取前9位生成Siren列
df2['Siren'] = df2['Siret'].str[:9]

步骤2:自动对齐两个DataFrame

用merge方法基于Siren列合并,自动将相同Siren的行匹配对齐,无需手动排序:

# 合并DataFrame,how='inner'只保留双方都有的Siren;用'outer'可保留所有行
merged_df = pd.merge(df1, df2, on='Siren', how='inner')

步骤3:验证分类匹配并生成Verify标记

直接对比Categorie和Type列,生成布尔值的Verify列,匹配为True,不匹配为False。如果需要忽略大小写或空格,可以先做清洗:

# 基础匹配
merged_df['Verify'] = merged_df['Categorie'] == merged_df['Type']

# 可选:忽略大小写和首尾空格的匹配
# merged_df['Categorie_clean'] = merged_df['Categorie'].str.strip().str.lower()
# merged_df['Type_clean'] = merged_df['Type'].str.strip().str.lower()
# merged_df['Verify'] = merged_df['Categorie_clean'] == merged_df['Type_clean']

步骤4:处理不匹配项(可选)

如果需要单独查看或导出不匹配的记录,直接筛选即可:

# 筛选不匹配的行
mismatched_data = merged_df[merged_df['Verify'] == False]

# 导出结果到新Excel
merged_df.to_excel('完整匹配结果.xlsx', index=False)
mismatched_data.to_excel('不匹配项汇总.xlsx', index=False)

关键提示

  • 必须确保Siren列在两个DataFrame中都是字符串类型,否则数字格式的差异(比如前导零丢失)会导致匹配失败。
  • 如果你的Excel文件中Siret是数字格式,读取时一定要用dtype={'Siret': str}参数,防止pandas自动转为整数丢失前导零。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:35:17