【Python】如何使用Python对比两个Excel乱序名单,查看是否缺少人名?

现有两个Excel表,分别是1.xlsx和2.xlsx,其中1.xlsx是完整名单,2.xlsx是可能有人员缺失的名单,两份名单之间的排序是不同的,请问如何用Python对比并查看是否缺少人名?
如图所示:

img

img

最后缺失的人名以缺失.xlsx生成:

img

import pandas as pd

#导入EXCEL文件
#在需要匹配的表格中增加一列匹配字段
excel_one = pd.read_excel(r'C:/Users/Admin/Desktop/1.xlsx',header=None,names=['名称'])
excel_two = pd.read_excel(r'C:/Users/Admin/Desktop/2.xlsx',header=None,names=['名称','标记'])
#填充匹配字段值
excel_two['标记'] = '存在'
#匹配两个表格数据
results = pd.merge(excel_one,excel_two,how='left',on='名称')
#定义没有匹配上的值
results = results .fillna('缺失')
#按照需求筛选出缺失名单
results = results[(results['标记'] == '缺失')]
#导出缺失名单
results.to_excel(r'C:/Users/Admin/Desktop/results.xlsx',index=False,columns=['名称'],header=False)

使用Python中的panda模块,然后对比两个dataframe


import xlrd
import xlwt

#创建excel
f = xlwt.Workbook()
#创建sheet
sheet1 = f.add_sheet('test', cell_overwrite_ok=True)
# 打开文件, 返回一个操作对象
excel_content1 = xlrd.open_workbook("C:\\Users\\dell\\Desktop\\1.xlsx.xlsx")
excel_content2 = xlrd.open_workbook("C:\\Users\\dell\\Desktop\\2.xlsx.xlsx")
# 获取所有的工作表目录
ret1 = excel_content1.sheets()[0]
ret2 = excel_content2.sheets()[0]
list1 = ret1.col_values(0) #获取表一的第一列数据, 参数(下标), list返回形式
list2 = ret2.col_values(0) #获取表二的第一列数据, 参数(下标), list返回形式
list3= [x for x in list1 if x not in list2] #存在于list1但不在list2
for i in range(len(list3)):
    sheet1.write(i, 0, label=list3[i]) #将列表数据写入sheet
# # 保存文件
f.save("C:\\Users\\dell\\Desktop\\缺失.xlsx")
#模拟excel导入后的数据,如果要导入,用pd.read_excel
df1=pd.DataFrame({'name': ['a', 'b', 'c', 'd', 'e']})
df2=pd.DataFrame({'name': [ 'b', 'c','e']})
#核心代码
df=df1[~df1.name.isin(df2.name)]
df.to_excel('qs.xlsx',index=False)

搞得那么复杂,用内建函数就可以了呀~~~if+VLOOKUP