秒匹配2张几万行级Excel表并输出任一列值已变更的行,保存成新的表格

2张Excel表,分别是不同日期的客户信息表,每份表大约有几万行,各列是每一个客户的账号、名称、证件号码、地址、电话等。抽几行数据看看:第一个表格保存上一个日期的客户信息第二份表格保存当前的客户信息
现在,需要快速找出同一个账号的客户,其对应的法人姓名、证件号码或地址、电话等信息是否发生了变更(如,第二份表格红色单元格),按往常Excel表格处理,首先要打开表格,使用vlookup函数逐列对应进行调用、匹配,或者使用if两两判断是否相同,…最后再逐列筛选出变化的数据,复制粘贴后另保存…
等一下,利用Python的pandas数据处理,将两份表格存放在D盘文件夹测试数据的目录下,book1.xlsx和book2.xlsx,然后运行一下程序,几秒钟就筛选出结果了。先看看代码吧。

import pandas as pd

data1 =  r'D:\测试数据\book1.xlsx'  #指定一个表格,原始数据表
data2 =  r'D:\测试数据\book2.xlsx'  #指定一个表格,更新后的数据表
 
def compare_data(data1, data2):
    # 读取两个表
    dt1 = pd.read_excel(data1, sheet_name=0,dtype=object,na_rep="")#导入原始数据表
    dt2 = pd.read_excel(data2, sheet_name=0,dtype=object,na_rep="")#导入更新后的数据表    
    # 确定需要进行对比的列,主key字段名
    dt1_name = dt1['账号'].values.tolist()
    dt2_name = dt2['账号'].values.tolist()
    count = 0
    for i in dt1_name:
        if i in dt2_name:
            dt1_row = dt1.loc[dt1['账号'] == i]
            dt2_row = dt2.loc[dt2['账号'] == i]
            # 可以选择不做比较的列
            dt1_row_ = dt1_row.loc[:, dt1_row.columns.difference(['证件类型','数据日期'])]
            dt2_row_ = dt2_row.loc[:, dt2_row.columns.difference(['证件类型','数据日期'])]
            # 判断两行是否内容一致
            if dt1_row_.equals(dt2_row_):
                pass
            else:
                # count计数
                count += 1
                # 导入要保存的文件名,mode='a'可以控制连续写入csv文件。
                #dt1_row.to_csv(r'D:\测试数据\test1.csv', index=False,mode='a', header=None,encoding='utf-8_sig')
                dt2_row.to_csv(r'D:\测试数据\test2.csv',index=False,mode='a',header=None,encoding='utf-8_sig')
 
        else:
            print("匹配失败的账号:", i)
    
    # 同理,可以反过来比较一下
    for j in dt2_name:
        if j not in dt1_name:
            print("匹配失败的账号:", j)
    
    print("匹配完成!")
    print('测试不同的样本数为:', count)

compare_data(data1,data2)

就这样了,已经筛选出下面的新表格,保存在同一个文件夹中,新生成一个csv文件。看看是否满意。

>>> 
==================== RESTART: D:/2021年报告/匹配两份表的单元格是否不同.py ====================
匹配失败的账号: 36020006
匹配失败的账号: 36020005
匹配完成!
测试不同的样本数为: 3
>>> 

在这里插入图片描述
共发现了3个账户所对应的信息已发生了变更,如下表:
匹配出信息已变更的数据表
接下来,可以利用输出的名单作为监测目标,开展下一步的追踪工作…

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值