首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python比对EXCEL数据

平时都是把表格导入数据库,用数据库写sql找两个表之间相同的数据。上班的时候手上电脑没有装Oracle,有2个表格要比一下,要在表1(2w条数据,包含镇、村信息)中找到表2(2000条数据,只有名字和身份证号)中存在的人,就想用Python来试试:

在网上搜了一下,准备用xlrd这个模块,

导入xlrd,

importxlrd

设置路径,打开文件,

path1 ='D:\\1.xls'

data1 = xlrd.open_workbook(path1)

查询工作表,

sheets1 = data1.sheets()

sheet_1_by_name = data1.sheet_by_name(u'Sheet1')

sheet1_rows = sheet_1_by_name.nrows

打印测试:

第一行,第二行第4列,

print(sheet_1_by_name.row_values(1))

print(sheet_1_by_name.row_values(2,3,4))

结果:

['统筹区划代码', '新系统社区或者学校村组ID(8位数的那个)', '新系统社区或学校村组名称', '身份证', '姓名', '1、正常缴费;2、补缴', '1、实缴;2、欠缴', '缴费的年度', '个人缴费部分金额', '医保统筹基金划拨金额', '财政补贴金额', '', '']

['42****************']

第二个表格中只有姓名,身份证,

importxlrd

path1 ='D:\\1.xls'

data1 = xlrd.open_workbook(path1)

sheets1 = data1.sheets()

sheet_1_by_name = data1.sheet_by_name(u'Sheet1')

sheet1_rows = sheet_1_by_name.nrows

print(sheet_1_by_name.row_values(1))

print(sheet_1_by_name.row_values(2,3,4))

path2 ='D:\\2.xlsx'

data2 = xlrd.open_workbook(path2)

sheets2 = data2.sheets()

sheet_2_by_name = data2.sheet_by_name(u'Sheet1')

sheet2_rows = sheet_2_by_name.nrows

print(sheet_2_by_name.row_values(1,,1))

print(sheet_2_by_name.row_values(2,,3))

暂时还没研究怎么直接用data1和data2,直接就将其中的数据按行取出来用了,

sheet1_value = []

foriinrange(sheet1_rows):

sheet1_value.append(sheet_1_by_name.row_values(i))

sheet2_value = []

foriinrange(sheet2_rows):

sheet2_value.append(sheet_2_by_name.row_values(i))

如果表二中的身份证号在表一中存在,输出身份证号和表一中的信息,

foriinrange(sheet2_rows):

forjinrange(sheet1_rows):

ifsheet2_value[i][]insheet1_value[j]:

print(sheet2_value[i][],sheet1_value[j])

虽然比较慢,还是算完成了目标。

之后虽然拿到了输出的数据,但是Python在处理数据的时候,数字后面自动加了'.0',字符串前后加了单引号,在导入EXCEL后还要再将.0与单引号替换为空。

回头搜了一下EXCEL中如何匹配2表数据,说是用VLOOKUP函数。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180316G1LBON00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券