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

如何在pandas中访问字典类型列字段并提取嵌套值生成新列

解决Pandas DataFrame列中嵌套字典/列表的字段提取问题

你之前写法报错的核心原因是df['c']返回的是Pandas的Series对象,直接对Series用['some_data']会尝试匹配行索引为some_data的元素,而不是逐行提取字典对应key的值。

场景1:单层级字典提取

对应你最开始的示例:

df = pd.DataFrame([[30, 20, {'some_data': 30}]], columns=['a', 'b', 'c'])

可以直接用Series的str.get方法逐行提取字典key:

df['new_column'] = df['c'].str.get('some_data')

场景2:多层嵌套结构提取

对应你补充的嵌套列表+字典的场景:

df = pd.DataFrame([[30, 20, {'some_data': [{'other_data': 0}]}]], columns=['a', 'b', 'c'])

可以链式调用str.get和列表索引访问方法str[],按层级逐层取值:

# 取值路径:c列字典 -> some_data key -> 列表第0个元素 -> 字典的other_data key
df['new_column'] = df['c'].str.get('some_data').str[0].str.get('other_data')

通用容错方案(适合复杂场景)

如果实际数据中存在部分行结构缺失、字段不存在的情况,推荐用自定义函数+apply的方式实现,避免报错:

def extract_value(row):
    try:
        # 按你的实际取值路径修改即可
        return row['c']['some_data'][0]['other_data']
    except (KeyError, IndexError, TypeError):
        # 结构不匹配时返回自定义默认值
        return None

df['new_column'] = df.apply(extract_value, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:54:07