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

如何提取DataFrame中字典及子字典并生成新DataFrame?

解决方案:展开嵌套字典生成新DataFrame

针对你这个从嵌套字典列提取数据生成指定结构DataFrame的需求,我整理了一套简洁的pandas实现方案,直接就能复用!

完整代码实现

import pandas as pd

# 模拟你的原始DataFrame(如果是从文件读取的,替换成pd.read_csv/pd.read_excel即可)
raw_data = {
    'ID': [1, 2],
    'ColumnA': [
        {'1': {'Order': '0', 'Result': ''}, '2': {'Order': 'Yellow', 'Result': 'Red'}, '3': {'Order': 'Clear', 'Result': 'Tight'}, '4': {'Order': '1.000-1.030', 'Result': '1.015'}},
        {'1': {'Order': '0', 'Result': '1.015'}, '4': {'Order': '1.000-1.030', 'Result': '2.4'}, '5': {'Order': '6.0-7.0', 'Result': ''}, '6': {'Order': 'Negative', 'Result': 'Negative'}, '7': {'Order': 'Negative', 'Result': 'Negative'}, '8': {'Order': 'Negative', 'Result': 'Positive'}, '9': {'Order': 'Negative', 'Result': ''}}
    ]
}
df = pd.DataFrame(raw_data)

# 核心处理逻辑
# 1. 把每个单元格的字典拆成独立行,同时保留原ID
expanded_df = df.explode('ColumnA')
# 2. 展开嵌套字典的键值对,提取字典的键作为Column_ID
result_df = pd.concat(
    [
        expanded_df[['ID']],
        # 把嵌套字典里的Order/Result转成列
        expanded_df['ColumnA'].apply(pd.Series),
        # 提取原字典的键作为Column_ID
        expanded_df['ColumnA'].index.get_level_values(1).rename('Column_ID')
    ],
    axis=1
)
# 3. 调整列名和顺序到目标格式
result_df = result_df.rename(columns={'Order': 'Column_Order', 'Result': 'ColumnD_Result'})
result_df = result_df[['ID', 'Column_ID', 'Column_Order', 'ColumnD_Result']]

# 输出结果
print(result_df)

关键步骤解释

  • 拆分字典行:explode('ColumnA')会把每个单元格里的嵌套字典拆成单独的行,每一行对应字典中的一个键值对,同时保留原始的ID。
  • 展开嵌套结构:用pd.concat合并三部分数据:原始ID列、字典里的Order/Result值、以及原字典的键(也就是你需要的Column_ID)。
  • 格式调整:重命名列名并调整列的顺序,完全匹配你要求的新DataFrame结构,空值会自动保留为空白字符串,和示例结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:32:42