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

如何从字典嵌套列表字典结构的JSON类数据创建指定格式DataFrame

类JSON字典列表转三列DataFrame实现方案

首先注意:你提供的原始类JSON数据存在语法笔误,{'url': 'gh', 'title': 'tr, 位置的字符串tr后缺失闭合单引号,处理前需要先修正该错误,否则Python无法正常解析数据。

实现步骤

全程基于pandas实现,无需额外第三方库,两种实现方式可按需选择:

  • 基础循环写法(逻辑直观,易调试)
    先遍历所有外层字典拿到type值,再逐行展开内层的url、title记录,最后统一转成DataFrame:
    import pandas as pd
    
    # 修正语法错误后的原始数据
    raw_data = [
        {'expanded': [{'url': 'ab', 'title': 'bc'}, {'url': 'gh', 'title': 'tr'}, {'url': 'as', 'title': 'Sy'}, {'url': 'jk', 'title': 'kl'}]},
        {'inline': [{'url': 'hj', 'title': 'fdr'}, {'url': 'gh', 'title': 'lp'}, {'url': 'yr', 'title': 'ew'}]},
        {'inline': [{'url': 'ty', 'title': 'JEE .'}, {'url': 'ht', 'title': 'JEE .'}, {'url': 'lt', 'title': 'bus'}]}
    ]
    
    processed_rows = []
    # 遍历每组独立字典
    for group in raw_data:
        # 取当前组的type值和对应记录列表
        for data_type, records in group.items():
            # 逐行拆分每条url、title记录
            for single_rec in records:
                processed_rows.append({
                    "type": data_type,
                    "url": single_rec["url"],
                    "title": single_rec["title"]
                })
    
    df = pd.DataFrame(processed_rows)
    
  • pandas内置方法简写(代码更简洁)
    利用json_normalize方法直接拍平嵌套结构,再调整列顺序即可:
    import pandas as pd
    
    raw_data = [
        {'expanded': [{'url': 'ab', 'title': 'bc'}, {'url': 'gh', 'title': 'tr'}, {'url': 'as', 'title': 'Sy'}, {'url': 'jk', 'title': 'kl'}]},
        {'inline': [{'url': 'hj', 'title': 'fdr'}, {'url': 'gh', 'title': 'lp'}, {'url': 'yr', 'title': 'ew'}]},
        {'inline': [{'url': 'ty', 'title': 'JEE .'}, {'url': 'ht', 'title': 'JEE .'}, {'url': 'lt', 'title': 'bus'}]}
    ]
    
    flat_records = []
    for group in raw_data:
        current_type = next(iter(group.keys()))
        for rec in group[current_type]:
            rec["type"] = current_type
            flat_records.append(rec)
    
    # 调整列顺序和你要求的type、url、title一致
    df = pd.json_normalize(flat_records)[["type", "url", "title"]]
    

输出结果

运行代码后得到的DataFrame格式如下,完全匹配字段映射要求:

type url  title
0   expanded  ab     bc
1   expanded  gh     tr
2   expanded  as     Sy
3   expanded  jk     kl
4     inline  hj    fdr
5     inline  gh     lp
6     inline  yr     ew
7     inline  ty  JEE .
8     inline  ht  JEE .
9     inline  lt    bus

你给出的期望输出示例存在几处笔误:比如将expanded错写为expended、遗漏了部分数据行、title值和对应url匹配错位,以上结果是基于原始数据的字段对应关系生成的正确输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:12:32