You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中提取数据库有但工人未掌握的工人-技能对

生成工人未掌握技能的解决方案

数据预处理说明

先统一表的结构(若你的表是宽格式,需转成标准长格式):

  • 技能数据库表:最终转为单技能列的长表,包含所有技能的唯一值
  • 工人技能配对表:保持工人+技能的长表结构,每行记录一个工人掌握的一项技能

代码实现(Pandas)

import pandas as pd

# 替换为你的实际数据
# 技能数据库表(示例宽表转长表)
skills_wide = pd.DataFrame({
    'skill1': ['Python'],
    'skill2': ['SQL'],
    'skill3': ['Java'],
    'skill4': ['Excel']
})
all_skills = skills_wide.melt(value_name='skill')['skill'].drop_duplicates()

# 工人已掌握技能表(示例)
worker_skills = pd.DataFrame({
    'worker': ['worker1', 'worker1', 'worker2', 'worker3'],
    'skill': ['Python', 'SQL', 'Java', 'Excel']
})

# 生成所有工人-技能的全量配对
all_workers = worker_skills['worker'].drop_duplicates()
all_possible_pairs = pd.merge(all_workers, all_skills, how='cross')

# 筛选未掌握的技能
unmastered = all_possible_pairs.merge(
    worker_skills,
    on=['worker', 'skill'],
    how='left',
    indicator=True
).query("_merge == 'left_only'").drop(columns='_merge')

print(unmastered)

核心逻辑

  • 用melt转换宽格式技能表,确保所有技能集中在同一列,避免分散处理的误差
  • how='cross'生成笛卡尔积,得到所有工人与所有技能的组合,从根源上避免漏项
  • 左连接后通过_merge标识筛选未匹配项,完全解决重复问题,无论工人数量多少都能稳定运行

内容的提问来源于stack exchange,提问作者A Sm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:27:49