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

从Pandas DataFrame的列表内字典提取名称字段的问题

解决Pandas提取列表中字典的name字段问题

问题场景

你的Pandas列producers存储着包含字典的列表,需要提取每个字典中的name值,生成一个存储名称列表的新列,预期结果是将每个子列表里的name字段汇总成新列表。

错误原因分析

你之前遇到的TypeError: string indices must be integers,大概率是因为列中存在混合类型:部分元素是字符串形式的列表(而非实际的Python列表对象),导致代码试图对字符串取索引报错;第二种方法返回全NaN是因为str访问器只对字符串生效,实际列表元素无法通过str[0]获取值。

解决方案

1. 确认并统一数据类型

先检查列中元素的类型,确认是否有字符串混入:

print(df_trimmed['producers'].apply(type).value_counts())

如果输出包含<class 'str'>,说明需要先将字符串解析为实际的列表:

import ast

# 将字符串形式的列表转为Python列表对象
df_trimmed['producers'] = df_trimmed['producers'].apply(ast.literal_eval)

2. 提取name字段生成新列

当数据统一为列表类型后,用列表推导式快速提取name:

# 用lambda函数处理:非空列表则提取每个字典的name,空列表返回空列表
df_trimmed['producer_names'] = df_trimmed['producers'].apply(
    lambda x: [item['name'] for item in x] if x else []
)

或者用自定义函数,逻辑更清晰:

def extract_producer_names(producers_list):
    if not producers_list:
        return []
    return [prod['name'] for prod in producers_list]

df_trimmed['producer_names'] = df_trimmed['producers'].apply(extract_producer_names)

验证结果

处理后的数据会符合预期:

1 []
2 ['Bandai Visual', 'Notes']
3 ['Nippon Television Network']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:09:28