python漫漫学习路
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 实现VLOOKUP匹配
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
用PYTHON实现两表vlookup匹配功能,考虑两种情况,1)目标值在索引值后;2)目标值在索引值前
提示:以下是本篇文章正文内容,下面案例可供参考
1.目标值在索引值后
代码如下(示例):
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.writer.excel import ExcelWriter
import openpyxl
import xlwt
import xlrd
import xlsxwriter
#数据源
inputfile='C:\\Users\\TC\\Desktop\\匹配.xlsx'
outputfile='C:\\Users\\TC\\Desktop\\前匹配结果.xlsx'
wb1=load_workbook(filename=inputfile)
#遍历【sheet1】索引1,匹配【sheet2】1列,对应2、3据,复制到3.4列
hid_index1=1
target_index11=2
target_index12=3
sheet1=wb1.get_sheet_by_name('sheet1')
rowNum1=sheet1.max_row
colNum1=sheet1.max_column
#print(rowNum1,colNum1)
hid_index2=1
target_index21=3
target_index22=4
sheet2=wb1.get_sheet_by_name('sheet2')
rowNum2=sheet2.max_row
colNum2=sheet2.max_column
print(rowNum2,colNum2)
print('step1完成')
write_workbook=xlwt.Workbook()
write_sheet=write_workbook.add_sheet('新表',cell_overwrite_ok=True)
print('-----')
for index2 in range(1, rowNum2+1):
for col_index in range(1, colNum2+1):
# 遍历表2的每一行每一列,把对应的单元设置到新的文件中,即复制了表2的数据
write_sheet.write(index2-1,col_index-1,sheet2.cell(index2,col_index).value)
#print(index2-1,col_index-1)
# 在遍历列过程中,如果碰到目标数据列索引.即需要补充的字段,则进行遍历表1,判断的id索引匹配
if col_index == target_index11:
for index1 in range(1,rowNum1+1):
hid1 = sheet1.cell(index1,hid_index1).value
print(sheet2.cell(index2,col_index).value,hid1)
if hid1 == sheet2.cell(index2,hid_index2).value:
#write_workbook.style_list = copy2(wb1)
#xf_index = sheet2.cell_xf_index(1,rowNum1)
# 如果两个表的id相同则把表1的单元内容设置到表2对应的单元格
write_sheet.write(index2-1,col_index,sheet1.cell(index1,target_index11).value)
write_sheet.write(index2-1,col_index+1,sheet1.cell(index1,target_index12).value)
write_workbook.save(outputfile)
#write_workbook.close()
#wb1.close()
print('over')
2.目标值在索引值前
代码如下(示例):
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.writer.excel import ExcelWriter
import openpyxl
import xlwt
import xlrd
import xlsxwriter
#数据源
inputfile='C:\\Users\\TC\\Desktop\\匹配.xlsx'
outputfile='C:\\Users\\TC\\Desktop\\后匹配结果.xlsx'
wb1=load_workbook(filename=inputfile)
#遍历【sheet1】索引2,匹配【sheet2】1列,对应1、3据,复制到3.4列
hid_index1=2
target_index11=1
target_index12=3
sheet1=wb1.get_sheet_by_name('Sheet3')
rowNum1=sheet1.max_row
colNum1=sheet1.max_column
#print(rowNum1,colNum1)
hid_index2=1
target_index21=3
target_index22=4
sheet2=wb1.get_sheet_by_name('sheet2')
rowNum2=sheet2.max_row
colNum2=sheet2.max_column
print(rowNum2,colNum2)
print('step1完成')
write_workbook=xlwt.Workbook()
write_sheet=write_workbook.add_sheet('新表',cell_overwrite_ok=True)
print('-----')
for index2 in range(1, rowNum2+1):
for col_index in range(1, colNum2+1):
# 遍历表2的每一行每一列,把对应的单元设置到新的文件中,即复制了表2的数据
write_sheet.write(index2-1,col_index-1,sheet2.cell(index2,col_index).value)
#print(index2-1,col_index-1)
# 在遍历列过程中,如果碰到目标数据列索引.即需要补充的字段,则进行遍历表1,判断的id索引匹配
if col_index == target_index11:
for index1 in range(1,rowNum1+1):
hid1 = sheet1.cell(index1,hid_index1).value
print(sheet2.cell(index2,col_index).value,hid1)
if hid1 == sheet2.cell(index2,hid_index2).value:
#write_workbook.style_list = copy2(wb1)
#xf_index = sheet2.cell_xf_index(1,rowNum1)
# 如果两个表的id相同则把表1的单元内容设置到表2对应的单元格
write_sheet.write(index2-1,col_index+1,sheet1.cell(index1,target_index11).value)
write_sheet.write(index2-1,col_index+2,sheet1.cell(index1,target_index12).value)
write_workbook.save(outputfile)
#write_workbook.close()
#wb1.close()
print('over')
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
新手上路,望多多指教,除了用python进行处理外,也可以用power query进行合并查询,点击起来更快。
文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。 |