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

如何将API返回的嵌套JSON转换为指定格式pandas DataFrame

问题原因
  • 你之前调用pd.json_normalize传record_path=['rows']得到异常结果,核心是原始JSON存在两层嵌套:rows数组下的每个元素,实际值都存储在f子数组中,子数组里的每个元素才是存v值的最小单元,直接读最外层rows只能拿到包裹的f列,自然出现单列、数据拆分错误的问题
  • 第二个位置的v字段不是结构化对象,是字符串格式的非标准JSON(键值对用=连接,不符合JSON用:的语法规范),无法被json_normalize直接自动解析
  • 原始数据里有两个同名为v的字段,需要手动指定列名避免重名冲突
实现代码
import pandas as pd
import json

# 读取接口返回的rows节点数据
raw_rows = response.json()["rows"]
formatted_data = []

for row in raw_rows:
    # 提取当前行f数组下所有的v值
    v_values = [field["v"] for field in row["f"]]
    # 处理第二个位置的非标准JSON字符串:替换=为:后解析为字典
    nested_content = json.loads(v_values[1].replace("=", ":"))[0]
    # 按目标结构拼接行数据:第一个v、第三个v、name、Age
    formatted_data.append([
        v_values[0],
        v_values[2],
        nested_content["name"],
        nested_content["Age"]
    ])

# 生成DataFrame,可自定义v字段对应的列名,示例把两个v列命名为v1、v2
df = pd.DataFrame(
    formatted_data,
    columns=["v1", "v2", "name", "Age"]
)
运行结果

执行后得到的DataFrame完全匹配目标结构:

v1 v2 name Age
0 1a 1c  sam  10
1 2a 2c  tom  40

提示:如果后续接口返回的嵌套字符串格式有调整,只需要对应修改v_values[1]的解析逻辑即可;要修改v字段的列名,直接调整columns参数里的名称就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:45:31