如何遍历多层子节点并提取JSON中modifiers的指定字段?
提取modifiers字段的解决方案
你的JSON是多层嵌套结构:orders → line_items → modifiers,之前的代码直接指定modifiers作为路径,因为层级不对所以无法正确提取数据。以下是两种可行的处理方式:
方式一:一次性指定嵌套路径
利用pd.json_normalize的record_path参数指定从顶层到modifiers的完整路径,同时保留上层关联字段:
import pandas as pd # 假设data为你的原始JSON数据 df = pd.json_normalize( data, record_path=['orders', 'line_items', 'modifiers'], meta=[ ['orders', 'id'], ['orders', 'location_id'], ['orders', 'line_items', 'name'], ['orders', 'line_items', 'catalog_object_id'] ], record_prefix='modifiers_' ) # 可选:重命名列名优化可读性 df.rename(columns={ 'orders.id': '订单ID', 'orders.location_id': '门店ID', 'orders.line_items.name': '主商品名称', 'orders.line_items.catalog_object_id': '主商品ID' }, inplace=True) # 提取目标字段 target_df = df[['订单ID', '主商品名称', 'modifiers_name', 'modifiers_catalog_object_id']] print(target_df)
方式二:分步展开层级
如果觉得嵌套路径太复杂,可以分两步展开,先处理订单和商品,再提取modifiers:
import pandas as pd # 第一步:展开订单到商品层级 line_items_df = pd.json_normalize( data, record_path=['orders', 'line_items'], meta=['orders.id', 'orders.location_id'] ) # 第二步:从商品数据中展开modifiers modifiers_df = pd.json_normalize( line_items_df.to_dict('records'), record_path='modifiers', meta=['orders.id', 'orders.location_id', 'name', 'catalog_object_id'], record_prefix='modifiers_' ) # 提取目标字段 target_df = modifiers_df[['orders.id', 'name', 'modifiers_name', 'modifiers_catalog_object_id']] print(target_df)
两种方式都能准确提取modifiers中的name和catalog_object_id,同时保留对应的订单、主商品关联信息。
内容的提问来源于stack exchange,提问作者Aiss
相关产品推荐
相关产品推荐

