Excel表格非常强大,Python可以让我们的重复性表格工作一劳永逸。而且,在人工智能的机器学习模型的建立中,我们需要用Excel帮我们进行数据分析统计,我们需要把Python处理得到的数据写入excel进行数据分析。

前一段时间,我需要查找表格1中的所有的数据是否存在表格2中,所以我就思考能不能用编程实现呢?以后遇到类似的时间,改改数值就可以一键操作了。

比如,下查右图大表的1班的考生是不是都存在左图的小表里面(右图大表里有初一年级所有的班级,左图的小表是1班所有学生)

左图是小表,右图是大表

软件:Pycharm

1.导入库

我们需要在Python中操作excel表格,所以第一步,需要导入处理excel的库。我们用openpyxl,它是个读写 Excel 2010 xlsx/xlsm/xltx/xltm 的 Python 库,简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点。

import openpyxl

2.获取Excel文件

我的表格“原表.xlsx”,这里的路径为绝对路径

book = openpyxl.load_workbook('I:/workspace/对照查找/原表.xlsx')#原表

3.获得Excel文件的所有工作表

names = book.sheetnames

4.同样获得对照表的excel文件和所有的工作表

book_new = openpyxl.load_workbook('I:/workspace/对照查找/小表.xlsx')
names_new = book_new.sheetnames

5.找到工作表的第一个工作簿,从0开始算

sheetB = book[names[0]]  #sheet1

6.获得第一个工作簿的“C”列所有数据

sheetB_c= sheetB["B"]   #学号,指定学号作为唯一索引

因为,我们要根据两个表格的相同索引进行查找,所以同理得到对照表的第一个工作簿的C列所有数据。

sheetA = book_new[names_new[0]]
sheetA_c= sheetA["A"]   #学号,查找索引

7.设置初始值

"""
B表(原表),index2
A表(新表),index1
"""
indexB = 1      #循环索引值
indexA = 1
endline_B = 1423   #结束行
endline_A = 56

8.查找过程

使用暴力枚举法:双重循环,外层循环控制大表,内存循环控制小表。从大表indexB的第1行开始循环,查找小表indexA的第1行~第56行,如果遇到相同数据,把此单元格填充颜色,跳出循环;大表循环进入第二行,重复次过程。这种方法虽然运算量大,但是写起来比较简单。

for c_name in sheetB_c: #原表,要被替换的表if str(c_name.value) is None or indexB > endline_B:  #如果没有数据,退出breakindexA = 1for c_name1 in sheetA_c:value1 = str(c_name1.value)if value1 is None or indexA > endline_A:  # 如果没有数据,退出breakif value1 == str(c_name.value):sheetB["B" + str(indexB)].value = sheetA["A"+ str(indexA)].valuesheetB["C" + str(indexB)].fill = fille1  #填充颜色breakindexA+=1indexB += 1

9.全部查找完成,再把修改的颜色值保存到大表里面,修改数据

book.save('I:/workspace/替换/原表.xlsx')#原表

大家如果有什么好的思路,敬请指教~

Python实现表格之间的对照查找相关推荐

  1. C 语言 某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找

    某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找.已知华氏和摄氏温度的转换公式为:C = 5 / 9 X (F - 32) ...

  2. python中用pandas读写excel表格,根据关键字查找填表(类似vlookpup)

    python中用pandas读写excel表格,根据关键字查找填表(类似vlookpup) excel的vlookup出了N/A值 相关的库 读取和写入excel文件 查找赋值1 遍历表格每行 查找填 ...

  3. python比对excel表数据中的差异_Excel表格中数据比对和查找的几种技巧

    经常被人问到怎么对两份Excel数据进行比对,提问的往往都很笼统:在工作中,有时候会需要对两份内容相近的数据记录清单进行比对,需求不同,比对的的目标和要求也会有所不同.下面Office办公助手(www ...

  4. Python Tutorial中英双语对照文档2

    接 Python Tutorial中英双语对照文档1 CHAPTER SIX MODULES 模块 If you quit from the Python interpreter and enter ...

  5. Python Tutorial中英双语对照文档3

    接 Python Tutorial中英双语对照文档2 CHAPTER NINE CLASSES 类 Classes provide a means of bundling data and funct ...

  6. python生成表格并显示在浏览器_Pyodide:在浏览器端实现Python全栈科学计算

    现在越来越多的软件都Web化,浏览器化.虽然科学计算是一计算密集型的方向,对性能要求和实时性较高.但是数据计算方面也一直在做着这样的探索和发展. Jypyer notbook项目让科学计算真正实现了W ...

  7. python写表格_python写入表格

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! import xlwt #导入xlwt 库 book =xlwt.workboo ...

  8. Python与C之间的相互调用

    Python与C之间的相互调用(Python C API及Python ctypes库) 分类: [Python]2010-01-24 17:58 32468人阅读 评论(11) 收藏 举报 pyth ...

  9. Python与C之间的相互调用(Python C API及Python ctypes库)

    2010-01-24 17:58 14237人阅读 评论(11) 收藏 举报 目录(?)[-] Python C API 准备工作: C中内嵌Python 获取返回值 利用C扩展Python Pyth ...

最新文章

  1. docker-dockerfile
  2. iOS初级开发笔记:Block回调,实现简单的绑定支付宝逻辑
  3. Andoird --- 安卓 failed to connect to /192.168.0.135 (port 8080) after 1000ms
  4. Name node is in safe mode解决
  5. 【TypeScript系列教程12】Number对象的基本使用
  6. java 常量折叠_深入理解Java虚拟机之早期编译器优化
  7. cnblogs修改网站图标icon
  8. 如何修改Oracle并发连接数的设置
  9. #region的快捷键+++从一个页面中弹出一个新窗口,当新窗口关闭时刷新原窗口!...
  10. 编写HTML代码常见错误以及解决方法?
  11. 泛型ListT排序(利用反射)
  12. [Win32]创建模态窗口
  13. 【机器学习系列】概率图模型第六讲:因子图和道德图
  14. 高校科研管理系统源代码_加强医院科研管理系统提升科研水平
  15. 高中计算机课程网页修改,高中信息技术教学贯彻新课改理念
  16. 如何设计财务对账系统 —— 从0到1搭建对账中心实战
  17. 爬豆瓣电影top名单
  18. Web开发的一点心得(二年工作总结版)
  19. 【蓝桥杯选拔赛真题09】Scratch小猫旅行 少儿编程scratch蓝桥杯选拔赛真题讲解
  20. extjs中form表单提交成功、失败的响应信息

热门文章

  1. 推荐一个【好用的】【免费的】【视频】【播放器】【potplayer】
  2. EXCEL插入柱形图
  3. 2021极术通讯-自动驾驶穿越“生死线”
  4. 最贵服务器多少钱_不要再问租用服务器一个月多少钱了?你看到的都是别人想给你看的...
  5. vs 输入代码时出现火花_vscode 火花_火花监控如何每天处理10B请求
  6. django关于自增id的问题
  7. 让我做你的眼睛 - 全民K歌原版伴奏翻唱
  8. vivo watch2和华为watch3对比
  9. 漫画:美团面试题(面试时,面试官给了我一块巧克力。。)
  10. MacOS 日历和群晖日历同步问题解决