如何将含ess_skills列表的职业字典转换为Pandas DataFrame?
实现方法
这里提供一种高效的Pandas处理方案,直接实现技能拆分并关联职业信息:
步骤说明
- 将原始职业字典转为初始DataFrame
- 拆分技能列表为单独行,保留对应职业信息
- 展开技能字典为独立列
- 整理格式后导出Excel
代码示例
1. 模拟职业字典(对应你的occupations数据结构)
occupations = [ { "title": "软件工程师", "code": "SE001", "ess_skills": [ {"title": "Python编程", "description": "熟练使用Python进行后端开发"}, {"title": "数据库设计", "description": "能设计高可用的关系型数据库"} ] }, { "title": "数据分析师", "code": "DA001", "ess_skills": [ {"title": "SQL查询", "description": "编写高效的SQL语句提取数据"}, {"title": "数据可视化", "description": "用Tableau制作业务报表"} ] } ]
2. 核心处理代码
import pandas as pd # 转换为初始DataFrame df = pd.DataFrame(occupations) # 拆分技能列表,每个技能单独成行 df_exploded = df.explode("ess_skills", ignore_index=True) # 把技能字典展开为单独的列 df_final = pd.concat( [ df_exploded[["title", "code"]], df_exploded["ess_skills"].apply(pd.Series) ], axis=1 ) # 重命名列避免冲突,优化表头可读性 df_final.rename( columns={ "title": "职业名称", "code": "职业代码", "title": "技能名称", "description": "技能描述" }, inplace=True ) # 导出到Excel df_final.to_excel("职业技能明细.xlsx", index=False)
关键说明
explode("ess_skills"):Pandas内置方法,专门用于将列表类型的列拆分为多行,自动保留每行对应的其他字段apply(pd.Series):将字典类型的元素转换为DataFrame的列,实现字典键到列名的映射ignore_index=True:拆分后重置索引,避免出现重复索引问题- 如果存在空技能列表的职业,
explode会自动生成对应空行,可根据需求用dropna()过滤
内容的提问来源于stack exchange,提问作者b.waterreus
相关产品推荐
相关产品推荐

