涉及到在一个excel中提取某种特征信息(例如名字,身份证和电话)于另外一个excel中查找相关信息对应的条目时
如何采用python来进行快速的处理呢?
excel的相关处理主要采用pandas库来进行
首先是导入excel文件
import pandas as pd
df=pd.read_excel(r'C:xxxxxxxx.xls',sheet_name=0,header=0)#xxxx处填写文件路径
通过上述代码能够将excel表格转换为dataframe格式进行存储,其中sheet_name=0是选取excel的第一个表格,header=0则是默认将第0行作为表头,可以针对表格的实际情况进行设置
在本文标题的场景中,需要才一个excel中查找另外一个excel包含信息的行,因此需要将相关的几个excel一起导入称为dataframe方便下一步处理。
然后是根据excel生成需要查寻特征的列表
例如在本文场景中,需要在一个excel中提取身份证号信息,在另外一个excel中查找身份证号信息对应的条目
import numpy as np
people_list = np.array(df['身份证号']).tolist()
先在dataframe中取出身份证号对应的列信息,然后采用使用numpy将列信息生成列向量,再使用np.tolist()方法将向量转换为列表得到需要在另一个excel查寻的列表
根据需要查寻特征的列表在另外一个excel中查寻是否含有该特征
本文场景中,需要在另外一个excel中查寻是否含有该身份证号的相关条目
df2['包含'] = df2['身份证号'].astype(str).apply(lambda x: 1 if any(s in x for s in people_list) else 0)
df2为保持了另外一个excel信息的dataframe
在df2身份证号的列中通过apply()方法寻找是否含有与列表people_list中一样的身份证号,在df2中新增一列“包含”,如果查找到,则在找到的一行中的“包含”值设为1。否则,则“包含”值为0
以上方法具有一定的局限性,例如使用上述方法查找的值是A包含B的关系,而不是A=B,即如果采用此种方法进行姓名等字符串的查找时,当待查找项为abc时,若被查找列表中含有abcdfg项,则也判断为包含,值设为1。然而在一般情况下我们可能并不希望得到这样的结果。
得到所有包含值为1的行信息
df2[(True^df2['包含'].isin([0]))]
去重
由于第二表中的信息可能含有同一人的不同条目,因此可能需要按需去重
df2.drop_duplicates(subset=['姓名','身份证号'],keep='first',inplace=True)
将得到的结果保存为excel
writer = pd.ExcelWriter('XXX.xlsx')
df2[(True^df2['包含'].isin([0]))].to_excel(writer)
writer.save()
【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】
暂无评论内容