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

pandas json_normalize转嵌套JSON遇TypeError异常

解决json_normalize转换嵌套JSON为DataFrame时的TypeError问题

错误原因

你的代码存在两个核心问题:

  • 语法错误:meta参数里的'products'['id','title','price',...]写法完全错误,字符串类型的'products'不能用列表做索引,这直接触发了TypeError: string indices must be integers。
  • 路径逻辑错误:你把record_path设为'carts',但实际需要展开的是每个购物车下的products数组(让每个商品成为一行),同时携带对应购物车的关联信息。

正确实现代码

import requests
import pandas as pd
from pandas import json_normalize

requestObject = requests.get("https://dummyjson.com/carts")
requestObject_JSON = requestObject.json()

# 正确指定嵌套数组路径,同时携带购物车层级的字段
requestObject_JSON_DF_2 = pd.json_normalize(
    requestObject_JSON,
    record_path=['carts', 'products'],  # 展开购物车下的商品数组
    meta=[
        ['carts', 'id'],  # 购物车ID
        ['carts', 'total'],
        ['carts', 'discountedTotal'],
        ['carts', 'userId'],
        ['carts', 'totalProducts'],
        ['carts', 'totalQuantity']
    ]
)

# 可选:重命名列名,提升可读性
requestObject_JSON_DF_2.columns = [
    'product_id', 'title', 'price', 'quantity', 'product_total', 
    'discountPercentage', 'discountedPrice',
    'cart_id', 'cart_total', 'cart_discounted_total', 
    'user_id', 'cart_total_products', 'cart_total_quantity'
]

print(requestObject_JSON_DF_2)

代码说明

  • record_path=['carts', 'products']:指定从顶层的carts数组进入,再展开每个购物车下的products数组,最终每行对应一个商品条目。
  • meta参数:通过嵌套列表的形式指定需要保留的购物车层级字段,格式为[父级键, 子级键],确保购物车信息与对应商品正确关联。
  • 列名重命名:默认生成的列名会带路径前缀(如carts.id),重命名后更直观易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:27:04