Python实现员工数据集与奖金资格目录数据集的对比验证
员工奖金资格验证实现方案
需求说明
现有两个数据集:
- 实际员工数据集:存储当前员工的详细信息
- 奖金资格人员档案目录:存储符合奖金领取条件的人员特征模板
需要对比两个数据集,为实际员工新增Eligible列:
- 若员工的
Designation、Exp、Skill、Qualification、Level字段完全匹配目录中的某一行,标记为Yes - 若存在不匹配字段,返回第一个不匹配的字段名称
数据集定义
实际员工数据集
import pandas as pd # 实际员工数据集 data = {'Name':['Lee', 'Hom', 'Shi', 'Lao', 'Ana'], 'Designation':['Senior Consultant', 'Analyst', 'Associate', 'Manager', 'Director'], 'Exp':[7, 4, 1, 10, 16], 'Skill':['Research', 'Python', 'Excel', 'Finance', 'Leadership'], 'Qualification':['Msc', 'MTech', 'MCA', 'MBA', 'Phd'], 'Level':['B1', 'A2', 'A1', 'C1', 'D1']} df = pd.DataFrame(data)
奖金资格目录数据集
# 奖金资格人员档案目录数据集 data1 = {'Designation':['Consultant', 'Analyst', 'Associate', 'Manager', 'Director', 'Senior Director', 'VP'], 'Exp':[7, 4, 2, 10, 16, 20, 25], 'Skill':['Research', 'Python', 'Excel', 'Finance', 'Leadership', 'Leadership', 'Leadership'], 'Qualification':['Msc', 'MTech', 'MCA', 'MBA', 'MBA', 'Phd', 'Phd'], 'Level':['B1', 'A2', 'A1', 'C1', 'D1', 'D2', 'E1']} df1 = pd.DataFrame(data1)
实现代码
# 定义用于匹配的字段列表 match_columns = ['Designation', 'Exp', 'Skill', 'Qualification', 'Level'] # 将资格目录的匹配字段转换为元组集合,提升匹配效率 eligible_profiles = set(df1[match_columns].apply(tuple, axis=1)) def check_eligibility(row): # 先检查是否完全匹配资格目录 current_profile = tuple(row[match_columns]) if current_profile in eligible_profiles: return 'Yes' # 逐个字段检查,返回第一个不匹配的字段名 for col in match_columns: if row[col] not in df1[col].values: return col return 'Unknown' # 新增Eligible列 df['Eligible'] = df.apply(check_eligibility, axis=1) # 查看结果 print(df)
输出结果
Name Designation Exp Skill Qualification Level Eligible 0 Lee Senior Consultant 7 Research Msc B1 Designation 1 Hom Analyst 4 Python MTech A2 Yes 2 Shi Associate 1 Excel MCA A1 Exp 3 Lao Manager 10 Finance MBA C1 Yes 4 Ana Director 16 Leadership Phd D1 Qualification
内容的提问来源于stack exchange,提问作者AdityaV
相关产品推荐
相关产品推荐

