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

如何用Python展开DataFrame中crew列的嵌套字典列表?

解决CSV中嵌套列表字典列的展开问题

你的crew列存储的是字符串形式的Python列表字典,而非原生可迭代对象,这是无法直接展开的核心原因。以下是完整的Python处理方案:

步骤1:导入依赖库

import pandas as pd
import ast

步骤2:读取并解析字符串列

先读取CSV文件,再将字符串格式的列表转换为真实的Python对象:

# 读取CSV文件
df_credits = pd.read_csv('credits.csv')

# 解析字符串为Python列表(处理外层双引号+安全解析字面量)
def parse_crew_data(crew_str):
    try:
        # 移除首尾双引号,再用ast解析(避免eval的安全风险)
        return ast.literal_eval(crew_str.strip('"'))
    except Exception:
        # 解析失败时返回空列表,防止流程中断
        return []

df_credits['crew'] = df_credits['crew'].apply(parse_crew_data)

选用ast.literal_eval而非eval的原因:前者专门处理Python字面量(列表、字典、None等),安全性更高,不会执行潜在的恶意代码。

步骤3:展开嵌套数据

先将列表拆分为单独行,再将字典展开为独立字段:

# 展开列表,每个crew成员占一行
df_exploded = df_credits.explode('crew', ignore_index=True)

# 将字典列展开为独立列
df_crew_details = pd.json_normalize(df_exploded['crew'])

# 合并原表的id与展开后的crew信息
final_df = pd.concat([df_exploded[['id']], df_crew_details], axis=1)

最终效果

处理后的数据会将原表的每个id与对应的crew成员信息一一映射,示例输出结构如下:

idcredit_iddepartmentgenderidjobnameprofile_path
原id52fe44dac3a36847f80adfa3Camera22702Director of PhotographyJohn Seale/w4wp04pRMqJI2vt3gFTdIWLDDzp.jpg
原id52fe44dac3a36847f80adf8bDirecting23026DirectorRob Reiner/2zw9Iq9uo4vZiTQNQWdNFwbA1TA.jpg

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:00:39