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

如何从dataset['crew']列的每行数据中提取导演姓名?

从数据集crew字段提取导演姓名的方案

字段格式说明

你的数据集crew字段存储的是字符串化的列表字典,示例如下:

"[{'credit_id': '52fe4284c3a36847f8024f49', 'department': 'Directing', 'gender': 2, 'id': 7879, 'job': 'Director', 'name': 'John Lasseter', 'profile_path': '/7EdqiNbr4FRjIhKHyPPdFfEEEFG.jpg'}]"

提取步骤与代码实现

以下是基于Python的实用实现方案,兼顾安全性与稳定性:

  1. 解析字符串为原生Python对象
    不要用eval()(存在代码注入风险),改用ast.literal_eval()将字符串转为可操作的列表字典结构。

  2. 筛选导演条目并提取姓名
    遍历解析后的列表,匹配job字段为'Director'的条目,提取对应的name值。若存在多位导演,可按需返回列表或拼接字符串。

完整代码示例(以Pandas数据集为例)

import ast
import pandas as pd

# 假设dataset是你的Pandas DataFrame
def extract_director_names(crew_str):
    try:
        # 解析字符串为列表
        crew_list = ast.literal_eval(crew_str)
        # 筛选所有导演并提取姓名
        directors = [member['name'] for member in crew_list if member.get('job') == 'Director']
        # 单导演返回字符串,多导演用逗号拼接,无导演返回None
        return ', '.join(directors) if directors else None
    except (SyntaxError, TypeError, KeyError):
        # 处理解析失败、格式错误或字段缺失的情况
        return None

# 将提取结果新增为数据集的一列
dataset['director_names'] = dataset['crew'].apply(extract_director_names)

核心逻辑说明

  • ast.literal_eval():仅解析合法的Python字面量结构,避免恶意代码执行风险。
  • 列表推导式:快速遍历筛选目标条目,代码简洁高效。
  • 异常捕获:覆盖解析失败、字段缺失等场景,避免程序崩溃。

特殊情况处理

  • 字段为空/格式错误:函数返回None,可后续用dataset['director_names'].fillna('未知')统一处理空值。
  • 多位导演:默认用, 拼接成字符串,若需保留列表格式,直接返回directors即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:28:10