如何基于DataFrame动态计算候选人技能匹配百分比(规避硬编码)
动态计算候选人技能匹配百分比方案
核心思路
直接基于现有带两级MultiIndex列的DataFrame完成计算,全程动态获取技能分类与数据,无需硬编码构造列索引和原始数据:
- 确认现有DataFrame的列结构:第一级为
optional/mandatory分类,第二级为技能名称,索引为候选人姓名 - 通过MultiIndex层级筛选,自动提取所有mandatory类型的技能列
- 保留原匹配规则,用动态获取的参数替代硬编码值
实现代码
import pandas as pd # 假设此处已加载好你的目标DataFrame(即Output1中的DataFrame),变量名为df # 无需手动构造cols和data,直接使用加载后的df即可 def calculate_skill_coverage_percent(row): # 动态筛选当前行的所有必填技能值 mandatory_skills = row[row.index.get_level_values(0) == 'mandatory'] # 检查是否所有必填技能都达标 if mandatory_skills.sum() < len(mandatory_skills): return 0.0 # 计算总技能匹配百分比 total_skill_count = len(row) matched_skill_count = row.sum() return round((matched_skill_count / total_skill_count) * 100, 2) # 新增匹配百分比列 df['Percent_Match(%)'] = df.apply(calculate_skill_coverage_percent, axis=1) print(df)
关键说明
- 所有技能分类、技能名称均从现有DataFrame的MultiIndex中动态提取,完全适配技能列表的变化
- 百分比结果保留两位小数,可根据需求调整
round函数的精度参数
内容的提问来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

