最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

基于python实现-根据Excel表格指定的UniqueKey的顺序-到另一个参考表格中查找-补全与自己相关的数据

来源:博客园

今天笔者在整理一份数据时,有这样一个需求,已知有多个ID是UniqueKey,每一个UniqueKey及与它相关的数据为一行,存放于Excel表格行中

但他们相关的数据可能有误,而另一个表格Excel-02中的数据没有问题,但是UniqueKey顺序与第一个表格不一样

现在主要是要修改第一个表格的数据,当然可以使用excel相关的函数与公式实现,但这里笔者尝试使用python脚本处理


(资料图)

实现的逻辑与思路如下:

1、先将Excel-02表格中的数据,重新生成一个字典数据,因为UniqueKey是唯一的,这里我们可以以它为字段的key

2、使用for遍历Excel-01表格中的UniqueKey,然后到第一步生成中的字典数据中进行取相关的所以值(保险处理,需要考虑UniqueKey在上面的字典中找不到的情况)

3、将第二步生成的数据重新写入到一个新的Excel中,这样新的Excel中的UniqueKey,就肯定是和Excel-01中的UniqueKey顺序一样,也就可以直接粘贴了

特别说明:如果后面多个字段为空的,那很可能是因为没有在Excel-02中找到一样的UniqueKey,这种情况就需要手动处理了

核心的python代码如下:

import openpyxlimport pandasUniqueKey=["xxx01","xxx02","xxx03"]ExcelWorkBook = openpyxl.load_workbook("Excel-02.xlsx")ExcelSheet1 = ExcelWorkBook[ExcelWorkBook.sheetnames[0]]rows,cols = ExcelSheet1.max_row,ExcelSheet1.max_columnExcelDataDict={}for i in range(1,rows+1):    A=ExcelSheet1.cell(row=i, column=1).value    cols_data=[]    for j in range(1,cols+1):        cols_data.append(ExcelSheet1.cell(row=i, column=j).value)    ExcelDataDict[A]=cols_dataNewData,ErrorItem=[],[]for key in UniqueKey:    try:        NewData.append(ExcelDataDict[key])    except:        NewData.append([key])        ErrorItem.append(key)

最后将NewData的数据写入到新的Excel中就可以了,这样形成的表格中的UniqueKey就与我们需要修正的Excel-01顺序是一样的了

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17417330.html

关键词: