python如何做数据匹配,用excel匹配数据
业务需求:1.现有a.xlsx
在a.xlsx中有两个表,即a数据1和a的数据2,
的数据2,如下所示
2.a.xlsx data1和data2有A列,A列中有些数据值是相同的。
现在我们需要匹配数据1和数据2来生成c.xlsx的数据3,
匹配规则:复制a.xlsx的data2生成c.xlsx的data3。
data3的d列值都为空,d列对应的a列的值部分与a.xlsx的data1的a列的值部分相同,a.xlsx的data1的a列对应的b列都有值,但是data3的d列值都为空,所以需要将相同的a列值对应的“英文翻译”列值匹配复制到c.xlsx中生成data3。
实施:
test _ data 4():file 1= data/a . xlsx # Open a . xlsxwb 1=xlrd . Open _ workbook(filename=file 1)# a . xlsx列索引hid_index1=0 # A.xlsx目标数据列索引target _ index 1=1 # data1 sheet 1=wb1 . sheet _ by _ name( data1 of a )# row num 1=sheet 1 . nrows # sheet=a colnum 1=sheet 1 . ncols # The sheet=a的data1中的列B)hid _ Index 2=0 # data 2的索引sheet=a的目标数据列(即, sheet=a)的data2中的E列target _ index 2=3 # Get data 2 sheet 2=wb1 . sheet _ by _ name( a的data 2 )# sheet=a的data 2的总行数row num 2=sheet 2 . n rows # sheet=a的data 2的总列数colnum 2=sheet 2 . ncols # Xlwt要生成一个新文件sheet=c的data 3 write _ workbook=Xlwt . workbook()write _ sheet=write _ workbook . add _ sheet( c的data3), cell _ overwrite _ ok=true)for index 2 in range(0,rownum2): for col _ index in range (0,colnum2): #遍历表2的每一行每一列,将对应的单元格设置到一个新文件中,即数据write _ sheet。 write (index2,col _ index,sheet2。cell _ value (index2,col _ index)) #在遍历列的过程中,如果遇到目标数据列索引,即需要补充的字段,遍历表1,判断的id索引匹配if col _ index==target _ index 2:for index 1 in range(1,rownum 1):hid 1=sheet 1 . cell _ value(index 1,hid _ index 1)if hid 1==sheet 2 . cell _ value(index 2,hid_index2): write_workbook,style _ list=copy 2(wb1)xf _ 1 RowNum1) #如果两个表的id相同,则将表1的单元格内容设置为对应的单元格write _ sheet.write (index2,col _ index,sheet1.cell _ value (index1,target _ index1),style _ list [xf _ index]) #并保存新文件write _ workbook.save (data/)
获取c.xlsx文件
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。