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

Pandas如何规范化包含多层嵌套JSON列表的JSON文件

解决方案

问题根因

pandas.json_normalize默认仅展开JSON结构中的对象层级,不会自动解析列表类型的嵌套字段,因此你直接调用时products、pagamentos两个列表字段会保持原有的嵌套格式。

实现代码

场景1:单独展开单个列表字段

以展开products字段为例,显式指定record_path标记要展开的列表,用meta指定需要保留的上层公共字段:

import pandas as pd

# 你的原始API返回JSON数据
raw_data = [{'la_id': '33',
  'store': '1405fdsa6001209',
  'sell': '110aa346',
  'products': [{'codigo': '176690', 'lacre': '15980fd2293', 'valor': '49.90'},
   {'codigo': 'sd4907', 'lacre': '1598a12385', 'valor': '19.90'},
   {'codigo': 'aa4907', 'lacre': '1598a2384', 'valor': '19.90'},
   {'codigo': '1fd307', 'lacre': '1598a20401', 'valor': '169.90'}],
  'payment': {'paymentid': '10a836',
   'value': '259.6000',
   'number': '4',
   'finalid': '4',
   'finalname': 'Cartao de credito',
   'docs': '849763',
   'flag': None},
  'pagamentos': [{'pagamento_id': '107795',
   'valor': '854.9900',
   'numero_parcelas': '10',
   'finalizador_id': '4',
   'finalizador_nome': 'Cartao de credito',
   'documento': '500003',
   'bandeira': 'MASTERCARD'}]
}]

# 展开products列表,保留上层公共字段
df_products = pd.json_normalize(
    raw_data,
    record_path='products',
    meta=[
        # 一级上层字段
        'la_id', 'store', 'sell',
        # 嵌套payment对象的字段,用列表指定层级
        ['payment', 'paymentid'], ['payment', 'value'], ['payment', 'finalname']
    ],
    # 可选:给展开的字段加前缀避免重名
    record_prefix='product_'
)

如果要展开pagamentos字段,只需把record_path的值替换为pagamentos即可。

场景2:同时展开两个列表字段到同一张表

json_normalize单次仅支持指定一个待展开的列表,因此可以分别展开两个列表后通过公共字段关联合并:

# 先分别展开两个列表字段
df_products = pd.json_normalize(
    raw_data, 
    record_path='products', 
    meta=['la_id', 'sell'], 
    record_prefix='product_'
)
df_pagamentos = pd.json_normalize(
    raw_data, 
    record_path='pagamentos', 
    meta=['la_id', 'sell'], 
    record_prefix='pagamento_'
)

# 通过公共的订单标识字段关联合并
df_full = pd.merge(df_products, df_pagamentos, on=['la_id', 'sell'], how='left')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:54:02