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

如何遍历多层子节点并提取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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:23:07