python漫漫学习路

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列,对应23,复制到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列,对应13,复制到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提供了大量能使我们快速便捷地处理数据的函数和方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值