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

如何将含多维数组的JSON转换为展开的Pandas DataFrame

解决嵌套JSON数组展开为DataFrame列的问题

针对你遇到的sancoes嵌套数组无法展开的问题,有两种直接可行的处理方式:

方法一:直接用pd.json_normalize处理JSON数据

json_normalize是Pandas专门为嵌套JSON设计的工具,可以一次性将嵌套字段展开并保留顶层字段,比from_dict更适合你的场景:

import requests
import pandas as pd

acordo_leniencia = requests.get(url_acordo_leniencia, headers=chave)
json_data = acordo_leniencia.json()

# 直接解析嵌套JSON,指定要展开的路径和保留的顶层字段
df = pd.json_normalize(
    json_data,
    record_path='sancoes',  # 指定要展开的嵌套数组字段
    meta=['id', 'dataInicioAcordo', 'dataFimAcordo', 'orgaoResponsavel', 'situacaoAcordo', 'quantidade']  # 需要保留的顶层字段
)

生成的df会把sancoes里的每个字段(比如cnpj、razaoSocial)都变成独立列,同时保留原有的id、dataInicioAcordo等字段。

方法二:基于已生成的DataFrame展开

如果已经用from_dict生成了初始df,可以分两步展开嵌套字段:

# 假设已经有初始df
df = pd.DataFrame.from_dict(json_data)

# 第一步:将sancoes数组拆分为每行对应一个字典(数组含多个元素时自动生成多行)
df_exploded = df.explode('sancoes', ignore_index=True)

# 第二步:将sancoes列的字典转换为结构化列,再和原表合并
df_sancoes = pd.DataFrame(df_exploded['sancoes'].tolist())
final_df = pd.concat([df_exploded.drop('sancoes', axis=1), df_sancoes], axis=1)

如果sancoes数组里有多个元素,explode会自动为每个元素生成一行,同时复制对应行的顶层字段值,保证数据关联正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:45:33