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

如何从含字典的行中创建新的pandas DataFrame?

解决方法:从嵌套字典列表生成新DataFrame

嘿,我来帮你搞定这个问题!你的DataFrame里mandados列每行都是包含嵌套字典的列表,要把这些内容展开成新的DataFrame,咱们分步骤来:

第一步:确认数据类型

首先得搞清楚mandados列里的内容是原生Python对象,还是字符串格式的列表/字典(CSV读取经常会把Python对象转成字符串)。你可以先跑这段代码看看:

print(type(geral['mandados'].iloc[0]))

如果输出是<class 'str'>:

那说明内容是字符串,得先把它转换成Python的列表+字典对象,用ast.literal_eval来解析:

import ast

# 将字符串格式的列表字典转为Python原生对象
geral['mandados'] = geral['mandados'].apply(ast.literal_eval)

如果输出是<class 'list'>:

那直接进入下一步就行~

第二步:展开嵌套内容生成新DataFrame

接下来咱们把列表拆分成单独行,再把字典展开成列:

# 1. 把每行的列表拆成单独的行,每个字典占一行
exploded_df = geral.explode('mandados', ignore_index=True)

# 2. 把嵌套字典展开成扁平的列(支持多层嵌套哦)
final_df = pd.json_normalize(exploded_df['mandados'])

# 3. 如果需要保留原DataFrame的其他列(比如sucesso、paginador),就合并进去
final_df = final_df.join(exploded_df[['sucesso', 'paginador']].reset_index(drop=True))

代码解释

  • explode('mandados'):把每行里的列表元素拆出来,原来一行如果有3个字典,就会变成3行,每行对应一个字典。
  • pd.json_normalize():自动把字典的键变成列名,值填充到对应位置,哪怕字典是多层嵌套的(比如{"info": {"nome": "xxx", "idade": 30}}),也会展开成info.nome、info.idade这样的列。
  • join():把原DataFrame里你需要保留的列(比如sucesso、paginador)合并到新的DataFrame里,保证每行的关联信息不丢失。

举个小例子:如果原DataFrame某行是这样的:

mandadossucesso
[{"id":1, "nome":"Maria"}, {"id":2, "nome":"João"}]True

经过处理后,final_df会变成:

idnomesucesso
1MariaTrue
2JoãoTrue

如果你的字典结构有不一致的地方(比如有的字典多几个键),json_normalize会自动给缺失的列填充NaN,完全不用担心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:34:23