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

如何从职位技能列提取技能并实现独热编码以构建ML数据集?

从技能列提取技能并实现0-1编码的高效方法

问题场景

我想要从job_skills列中提取所有技能作为属性,并对其进行0-1编码,请问该如何操作?注:我尝试构建DataFrame,但手动填充效率太低,希望找到从列中提取技能列表的方法,以便将数据集应用于机器学习算法。

原始代码示例

import pandas as pd

data = [['a', ['Python', 'UI',' Information Technology (IT)','Software Development','GTK','English',' Software Engineering']],
        ['b', ['Python', 'Relational Databases',' Celery',' VMWare','Django','Continous Integration',' Test Driven Development',' HTTP']],
        ['c', ['Flask', 'Python',' Celery',' Software Development',' Computer Science','Information Technology (IT)']],
        ['c', ['Flask', 'Python',' Celery',' Software Development',' Computer Science','Information Technology (IT)']]
        ]
df1= pd.DataFrame(data, columns=['col1', 'col2'])

# 原始编码方法
pd.get_dummies(df1['col2'].explode()).groupby(level=0).sum()

方法解析

你给出的代码已经是高效实现需求的方案,核心步骤如下:

  • explode():将每行的技能列表拆分成多行,每个技能单独占一行,同时保留原行的索引。
  • pd.get_dummies():将拆分后的技能列转换为独热编码(0-1)格式,每个技能作为一列,存在则标记为1,否则为0。
  • groupby(level=0).sum():按原索引分组求和,将同一行拆分后的编码结果合并,得到每行对应的技能0-1编码。

优化建议:清理技能名称的冗余空格

示例中部分技能名称带有前后空格(比如' Information Technology (IT)'),这会导致相同技能被识别为不同列。可以在拆分前先清理空格,优化后的代码如下:

import pandas as pd

data = [['a', ['Python', 'UI',' Information Technology (IT)','Software Development','GTK','English',' Software Engineering']],
        ['b', ['Python', 'Relational Databases',' Celery',' VMWare','Django','Continous Integration',' Test Driven Development',' HTTP']],
        ['c', ['Flask', 'Python',' Celery',' Software Development',' Computer Science','Information Technology (IT)']],
        ['c', ['Flask', 'Python',' Celery',' Software Development',' Computer Science','Information Technology (IT)']]
        ]
df1= pd.DataFrame(data, columns=['col1', 'col2'])

# 先清理技能名称的前后空格
df1['col2'] = df1['col2'].apply(lambda skills: [s.strip() for s in skills])

# 再执行编码操作
encoded_df = pd.get_dummies(df1['col2'].explode()).groupby(level=0).sum()
print(encoded_df)

最终效果

执行优化后的代码后,会生成一个新的DataFrame:每一列对应一个去重后的技能,每行的数值表示该行是否包含对应技能(1表示包含,0表示不包含),可以直接用于机器学习模型的特征输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:51:42