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

如何从pandas字典列表字符串列提取值生成新列genres1?

提取Pandas字符串格式字典列表中的name值

问题场景

  • 现有top_chart_movies DataFrame,genres列存储的是字典列表格式的字符串(示例值:'[{"id": 18, "name": "Drama"}, {"id": 80, "name": "Crime"}]')
  • 需求:提取每个字典的"name"字段值组成列表,生成新列genres1,要求top_chart_movies['genres1'].head(2)输出:
    1881  ["Drama","Crime"]
    3337 ["Drama","Crime"]
    
  • 原尝试代码top_chart_movies['genres1'] = [value for key, value in top_chart_movies['genres']]无效,原因是genres列元素是字符串,而非可直接遍历的Python列表对象。

解决方案

方法1:使用ast.literal_eval解析字符串

ast.literal_eval可安全将字符串格式的列表/字典转换为对应Python数据结构,适合处理非标准JSON格式的字符串:

import ast
import pandas as pd

top_chart_movies['genres1'] = top_chart_movies['genres'].apply(
    lambda x: [item['name'] for item in ast.literal_eval(x)]
)

方法2:使用json.loads解析(适用于标准JSON字符串)

如果genres列的字符串是标准JSON格式(键值均为双引号),可使用json模块解析:

import json
import pandas as pd

top_chart_movies['genres1'] = top_chart_movies['genres'].apply(
    lambda x: [item['name'] for item in json.loads(x)]
)

验证结果

执行上述代码后,运行top_chart_movies['genres1'].head(2)即可得到目标输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:15:25