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

Python:将嵌套字典列表转换为指定结构的DataFrame

问题描述

我有如下嵌套字典列表的Python数据:

data = [
    {'AU37172316199': {'B25J9/18__2016': 1}},
    {'AU41504932409': {'G06F15/00__2003': 1}},
    {'AU41687119230': {'C07K14/435__1997': 1}},
    {'AU48692741449': {'G06F15/00__2002': 1}},
    {'AU632317250': {'G16H50/00__2021': 1}},
    {'AU68078335009': {'G06F19/00__2009': 1}},
    {'BE0684625505': {'G06Q10/04__2020': 1}},
    {'BM24983R': {'G06Q50/00__2006': 1, 'G16H30/20__2007': 1}},
    {'BO00225660': {'G06V40/10__2022': 1}},
    {'BR02016440000162': {'G01R21/00__2019': 1}},
    {'BR02641663000110': {'G01R21/00__2019': 1}},
    {'BR05706282000160': {'G06F15/00__2004': 1,
      'G06F15/00__2005': 1,
      'G06F15/00__2006': 1,
      'G06F3/00__2005': 1,
      'G06K15/00__2005': 1,
      'H04N1/60__2006': 1}},
    {'BR33121512000165': {'G01R31/28__2020': 1}},
    {'CA132631008L': {'B62D1/24__2003': 1}},
    {'CA203540316L': {'H04L__2018': 1,
      'H04L25/02__2016': 1,
      'H04L25/02__2017': 1,
      'H04W24/00__2016': 1}}
]

需要将其转换为如下结构的DataFrame:主字典的键(如AU37172316199)需根据内部字典的键的数量重复,同时把字典中的数值(0或1)作为新列Flag:

CompanyresultFlag
0AE0000392297G06F17/10__20200
1AT9030014397B81B7/00__20160
2AT9030014397B81B7/00__20170
............
解决方法

可以通过遍历嵌套字典收集行数据,再转换为DataFrame,具体代码如下:

import pandas as pd

# 原始数据
data = [
    {'AU37172316199': {'B25J9/18__2016': 1}},
    {'AU41504932409': {'G06F15/00__2003': 1}},
    {'AU41687119230': {'C07K14/435__1997': 1}},
    {'AU48692741449': {'G06F15/00__2002': 1}},
    {'AU632317250': {'G16H50/00__2021': 1}},
    {'AU68078335009': {'G06F19/00__2009': 1}},
    {'BE0684625505': {'G06Q10/04__2020': 1}},
    {'BM24983R': {'G06Q50/00__2006': 1, 'G16H30/20__2007': 1}},
    {'BO00225660': {'G06V40/10__2022': 1}},
    {'BR02016440000162': {'G01R21/00__2019': 1}},
    {'BR02641663000110': {'G01R21/00__2019': 1}},
    {'BR05706282000160': {'G06F15/00__2004': 1,
      'G06F15/00__2005': 1,
      'G06F15/00__2006': 1,
      'G06F3/00__2005': 1,
      'G06K15/00__2005': 1,
      'H04N1/60__2006': 1}},
    {'BR33121512000165': {'G01R31/28__2020': 1}},
    {'CA132631008L': {'B62D1/24__2003': 1}},
    {'CA203540316L': {'H04L__2018': 1,
      'H04L25/02__2016': 1,
      'H04L25/02__2017': 1,
      'H04W24/00__2016': 1}}
]

# 初始化空列表存储行数据
rows = []

# 遍历每个字典项
for item in data:
    # 获取公司代码(每个子字典只有一个键)
    company = next(iter(item.keys()))
    # 获取内部的result和Flag对应的数据
    result_dict = item[company]
    # 遍历内部字典,生成每行数据
    for result, flag in result_dict.items():
        rows.append({
            'Company': company,
            'result': result,
            'Flag': flag
        })

# 转换为DataFrame
df = pd.DataFrame(rows)
print(df.head())

代码说明

  1. 遍历外层字典列表:逐个处理每个包含公司代码的字典。
  2. 提取公司代码:利用next(iter(item.keys()))快速获取每个子字典唯一的公司键。
  3. 生成行数据:遍历每个公司对应的内部字典,将公司代码、result值、Flag值组合成一行数据存入列表。
  4. 转换为DataFrame:将收集到的行数据列表直接转换为DataFrame,自动生成索引。

执行后得到的DataFrame示例前5行如下:

CompanyresultFlag
0AU37172316199B25J9/18__20161
1AU41504932409G06F15/00__20031
2AU41687119230C07K14/435__19971
3AU48692741449G06F15/00__20021
4AU632317250G16H50/00__20211

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:37:19