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

使用pandas访问API返回的JSON嵌套字段时触发KeyError该如何解决

KeyError问题解决方法
  • 核心原因

触发KeyError的核心原因有两个:

  1. df['trainingInput']列存储的是字符串格式的字典,不是Python原生的字典对象,无法直接通过字典key取值
  2. 多引号的写法错误,额外的引号会被识别为key的一部分,导致无法匹配到真实的字段名
  • 解决步骤
  1. 先将trainingInput列的字符串转为原生字典,推荐用安全的ast.literal_eval方法:
import ast
# 转换列格式,已兼容部分行值为空的场景
df['trainingInput'] = df['trainingInput'].apply(lambda x: ast.literal_eval(x) if isinstance(x, str) else x)
  1. 从转换后的字典列提取字段,用get方法做容错处理,避免部分行无对应字段时报错:
df['region'] = df['trainingInput'].apply(lambda x: x.get('region'))
df['serviceaccount'] = df['trainingInput'].apply(lambda x: x.get('serviceAccount'))
  1. 如果是从原始job变量取值,直接使用常规引号写法即可,不要加多余引号:
# 正确写法
region = job['trainingInput']['region']
service_account = job['trainingInput']['serviceAccount']
  • 排查验证方法
    执行print(type(df['trainingInput'].iloc[0])),如果输出为<class 'str'>则说明确实是格式未转换的问题,转换后输出为<class 'dict'>即可正常取值。
    如果你的原始JSON存在示例中多余逗号的语法问题,需要先清理异常符号后再做解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:05