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

如何用Pandas扁平化键名不统一的JSON并转为DataFrame?

用Pandas处理键名不统一的嵌套JSON

解决方案代码

import pandas as pd

# 假设已加载API返回的JSON为字典格式
json_data = {
    "data": {
        "1": {
            "item1": "data1",
            "item2": "data2",
            "item3": {
                "item4": {
                    "item5": "bla1",
                    "item6": "bla2",
                    "item7": "bla3"
                }
            }
        },
        "2": {
            "item1": "data3",
            "item2": "data4",
            "item3": {
                "item4": {
                    "item5": "bla4",
                    "item6": "bla5",
                    "item7": "bla6"
                }
            }
        }
    }
}

# 1. 将外层不统一的键转为DataFrame列,展开基础字段
df = pd.DataFrame.from_dict(json_data['data'], orient='index').reset_index().rename(columns={'index': '编号'})

# 2. 扁平化嵌套的item3字段并重命名
nested_df = pd.json_normalize(df['item3']).rename(
    columns={
        'item4.item5': 'item5',
        'item4.item6': 'item6',
        'item4.item7': 'item7'
    }
)

# 3. 合并所需字段得到最终结构
result_df = pd.concat([df[['编号', 'item1']], nested_df], axis=1)
print(result_df)

代码说明

  • 用pd.DataFrame.from_dict配合orient='index',直接把外层"1""2"这类不规则键转为索引,再通过reset_index将索引转为单独的"编号"列,同时展开第一层的基础字段。
  • 用pd.json_normalize自动扁平化嵌套的item3结构,并重命名字段匹配目标格式。
  • 通过pd.concat合并需要的字段,快速得到目标DataFrame。

输出结果

编号 item1 item5 item6 item7
0   1 data1  bla1  bla2  bla3
1   2 data3  bla4  bla5  bla6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:05:11