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
相关产品推荐
相关产品推荐

