第一次使用Python帮助单位解决问题
出于好奇,去年在网上报了一个Python编程学习班,学习了Python基础、办公、大数据分析,爬虫。课程学完了,但是一直没有用武之地。
这几天单位同事遇到一个难题,需要将两个电子表格中的数万条数据进行对比,找到其中的重复数据,电子表格也有这个功能,但是因为数据量太大,起动对比之后计算机就卡死了。
我听了他的介绍之后,告诉他,我可以Python试一试。
于是让他把数据传给我,开始研究起来,花了1个小时终于把代码调好了,总计23行代码,结果立马呈现出来了,小有成就。
但是还是不够完美,为了让程序能够适应所有要对比的数据,并生成一个新的电子表格,陆续又做了一些改进,总计32行代码,把代码晒出来,分享一下:
from openpyxl import load_workbook, Workbook wb1 = load_workbook('D:\peple\excel01.xlsx') #打开工作簿,并创建一个工作簿对象wb1 wb2 = load_workbook('D:\peple\excel02.xlsx') a_wb = wb1['导出'] #打开工作表,并创建一个工作表对象 b_wb = wb2['导出'] a_wb_max_row = len(a_wb['A']) b_wb_max_row = len(b_wb['A']) c=[] #建立一个空列表,用于存放对比出来的相同数据 for row in a_wb.iter_cols(min_row=1, max_row=a_wb_max_row, min_col=1, max_col=1, values_only=True): #历遍工作表对象制定区域的数值 row1 = list(row) #将元祖转换我列表 for row in b_wb.iter_cols(min_row=1, max_row=b_wb_max_row, min_col=1, max_col=1, values_only=True): row2 = list(row) for i in row1: if i in row2: #如果包含则返回循环 break else: #如果不包含,则把值保存到c列表中 c.append(i) wb3 = Workbook() #创建新工作簿对象 c_wb = wb3.active #创建活动工作表对象 for i in range(len(c)): #将列表分行写入工作表对象 d=[c[i]] c_wb.append(d) wb3.save('D:\peple\mynewdata.xlsx') #保存数据到新工作簿
为你推荐