pandas中从列内字典列表提取name值生成新列的方法
从字符串存储的字典列表列提取name值的pandas实现
处理流程
- 识别到目标列存储的是字符串形式的字典列表(非原生Python对象),无法直接遍历取值,需先将字符串解析为原生结构,再逐字典提取
name字段存入新列 - 无需针对Action、Adventure等具体类目做单独规则匹配,可自动覆盖列内所有字典条目的name取值
可直接复用的代码
- 导入依赖
import pandas as pd import json import ast
- 定义带容错的提取函数
def extract_target_names(cell): # 空值返回空列表,避免程序报错 if pd.isna(cell): return [] # 兼容双引号标准JSON、单引号非标准JSON两种字符串格式 if "'" in cell: parsed = ast.literal_eval(cell) else: parsed = json.loads(cell) # 遍历提取所有字典的name值 return [item["name"] for item in parsed]
- 生成新列
# 将"原始列名"替换为实际存储字典列表字符串的列名,提取结果存入"提取结果列"新列 df["提取结果列"] = df["原始列名"].apply(extract_target_names)
输出效果
示例输入单元格内容:'[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]'
对应新列输出内容:['Action', 'Adventure', 'Fantasy', 'Science Fiction']
内容的提问来源于stack exchange,提问作者Mahmoud
相关产品推荐
相关产品推荐

