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

如何将包含嵌套数组字段的JSON转换为Pandas DataFrame

问题解答

结论

该需求完全可实现,核心思路是将intervalData数组的每一行作为数据条目,用intervalMetaData作为对应的列名生成子DataFrame,再和JSON外层的公共属性字段合并即可。

具体操作步骤

前置依赖

需要提前安装pandas库,安装命令:

pip install pandas

操作代码示例

单条JSON数据处理

import pandas as pd
import json

# 读取JSON文件,这里假设你的JSON数据保存在data.json中
with open("data.json", "r", encoding="utf-8") as f:
    json_data = json.load(f)

# 第一步:处理嵌套的interval数据,生成子DataFrame
# 先处理重复列名的问题,避免后续操作冲突
col_names = []
count_dict = {}
for col in json_data["intervalMetaData"]:
    if col in count_dict:
        count_dict[col] += 1
        col_names.append(f"{col}_{count_dict[col]}")
    else:
        count_dict[col] = 0
        col_names.append(col)
interval_df = pd.DataFrame(json_data["intervalData"], columns=col_names)

# 第二步:合并外层公共字段到子DataFrame
# 提取外层不需要嵌套展开的字段
outer_fields = {k:v for k,v in json_data.items() if k not in ["intervalMetaData", "intervalData"]}
for k,v in outer_fields.items():
    interval_df[k] = v

# 最终的结果就是interval_df,可以直接输出查看
print(interval_df.head())

多条JSON数组批量处理

如果你的JSON文件是多条上述结构的对象组成的数组,可以用如下方式批量处理:

import pandas as pd
import json

with open("data_list.json", "r", encoding="utf-8") as f:
    json_list = json.load(f)

result_list = []
for json_data in json_list:
    # 列名去重
    col_names = []
    count_dict = {}
    for col in json_data["intervalMetaData"]:
        if col in count_dict:
            count_dict[col] += 1
            col_names.append(f"{col}_{count_dict[col]}")
        else:
            count_dict[col] = 0
            col_names.append(col)
    interval_df = pd.DataFrame(json_data["intervalData"], columns=col_names)
    # 合并外层字段
    outer_fields = {k:v for k,v in json_data.items() if k not in ["intervalMetaData", "intervalData"]}
    for k,v in outer_fields.items():
        interval_df[k] = v
    result_list.append(interval_df)

# 合并所有结果为一个DataFrame
final_df = pd.concat(result_list, ignore_index=True)

注意事项

  • 原始JSON结构中intervalMetaData存在重复的列名(比如max、maxGen都出现了2次),示例代码中通过添加序号后缀的方式处理了重复列名问题,你可以根据实际业务需求调整重命名规则
  • 如果你不需要保留所有外层字段,可以自行修改outer_fields的筛选规则,只保留你需要的字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:10