使用Pandas/Python校验无序数据集值一致性并转换0/1为布尔值
使用Pandas处理零件编号匹配与列值对比
直接上可运行的代码步骤,按需调整文件路径即可:
- 导入依赖库
import pandas as pd
- 读取两个数据集
假设你的数据是Excel格式,替换成实际文件路径即可;如果是CSV,把read_excel换成read_csv:
df_a = pd.read_excel("你的第一个数据集文件路径.xlsx") df_b = pd.read_excel("你的第二个数据集文件路径.xlsx")
- 按零件编号合并数据集
用Part number作为匹配键,内连接确保只保留两边都存在的零件记录,后缀区分两个数据集的列:
merged_data = pd.merge(df_a, df_b, on="Part number", suffixes=("_a", "_b"))
- 对比指定列的0/1值,生成布尔匹配结果
针对H50、H51、H53列分别生成匹配状态列,相等为True,不等为False:
merged_data["H50匹配"] = merged_data["H50_a"] == merged_data["H50_b"] merged_data["H51匹配"] = merged_data["H51_a"] == merged_data["H51_b"] merged_data["H53匹配"] = merged_data["H53_a"] == merged_data["H53_b"]
- 筛选存在不匹配的行并导出
只要任意一列不匹配,就将该行纳入导出范围:
# 筛选至少有一列不匹配的记录 mismatch_rows = merged_data[~(merged_data["H50匹配"] & merged_data["H51匹配"] & merged_data["H53匹配"])] # 导出到指定Excel文件,不保留索引列 mismatch_rows.to_excel("Not in contract.xlsx", index=False)
额外说明
- 如果需要保留原数据集的全部列,上面的
merged_data已经包含了两个数据集的所有列,导出时会一并保存;如果只需要特定列,可以在to_excel里用columns参数指定,比如columns=["Part number", "H50_a", "H50_b", "H50匹配"] - 如果你的
Part number列存在空值或者格式不一致(比如字符串/数字混合),建议先统一格式,比如df_a["Part number"] = df_a["Part number"].astype(str),避免匹配失败
内容的提问来源于stack exchange,提问作者millie1712
相关产品推荐
相关产品推荐

