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

如何解析嵌套JSON并将所有字段展开为DataFrame?

解决嵌套JSON展开为DataFrame的问题

一、继续处理已有的df3展开results字段

你可以通过pd.json_normalize解析results列的嵌套结构,再与原表合并,最后展开values字段:

# 解析results列中的嵌套数据
results_parsed = pd.json_normalize(df3['results'])
# 将解析结果与原表合并,移除原results列
df4 = pd.concat([df3.drop('results', axis=1), results_parsed], axis=1)
# 展开values字段内的键值对,生成单独列
final_df = pd.concat([df4.drop('values', axis=1), df4['values'].apply(pd.Series)], axis=1)

执行后final_df会将requestedId、height、distance等所有嵌套键转为单独列,和其他字段并列展示。

二、一步到位展开所有嵌套列的方法

无需分步处理,直接利用pd.json_normalize的多层路径参数,从原始JSON字典直接生成完全展开的DataFrame:

final_df = pd.json_normalize(
    json_dict,
    # 指定最深层的数组路径:先展开items数组,再展开每个item下的results数组
    record_path=["items", "results"],
    # 指定需要保留的上层元数据,包括嵌套的address信息
    meta=[
        "requestId",
        "processingTimeInMilliseconds",
        ["items", "address", "countryCode"],
        ["items", "address", "id"]
    ],
    # 设置嵌套字段的分隔符,便于区分层级
    sep="."
)

# 最后展开values字段的内容
final_df = pd.concat([final_df.drop('values', axis=1), final_df['values'].apply(pd.Series)], axis=1)

这样就能直接把JSON中所有层级的键都转为DataFrame的列,实现你的目标。如果values中的键不固定(比如有的条目是height,有的是distance),apply(pd.Series)会自动为缺失的键填充NaN,不影响整体结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:32:41