使用python处理excel数据,在一个excel中提取信息于另外一个excel中查找

涉及到在一个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()

你可能感兴趣的:(使用python处理excel数据,在一个excel中提取信息于另外一个excel中查找)