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

Python如何将for循环生成的字典列表转换为DataFrame

实现方法

你只需要先把所有for循环产出的字典汇总到同一个大列表中,再传入pandas的DataFrame构造函数即可,pandas原生支持「同键名字典组成的列表」直接转结构化表格,会自动把字典键作为列名、字典值作为行数据。


前置准备

如果还没安装pandas,先在终端执行安装命令:
pip install pandas


写法1:循环过程中同步收集数据(推荐,性能最优)

不要每次循环单独存小列表,直接在循环里把每次产出的字典批量追加到统一的收集列表中,循环结束后一次性生成DataFrame,避免多次拼接DataFrame带来的性能损耗。
示例代码:

import pandas as pd

# 初始化空列表,用来存储所有行对应的字典
all_rows = []

# 替换成你自己的for循环逻辑即可
# 以下为模拟你给出的两次循环产出的示例
for loop_count in range(2):
    if loop_count == 0:
        # 第一次循环的输出结果
        loop_output = [{'name':'kumar','job':'Plumber'},{'name':'Rajesh','job':'Painter'}]
    else:
        # 第二次循环的输出结果
        loop_output = [{'name':'Jaslin','job':'Teacher'},{'name':'Ramu','job':'Engineer'}]
    
    # 把当前循环产出的所有字典批量加入总列表
    all_rows.extend(loop_output)

# 直接生成目标DataFrame
df = pd.DataFrame(all_rows)

# 打印验证输出
print(df)

运行后输出的结果和你预期的结构完全一致:

name       job
0   kumar   Plumber
1  Rajesh   Painter
2  Jaslin   Teacher
3    Ramu  Engineer

写法2:已拿到所有循环产出的小列表时的处理方法

如果你已经跑完循环,把每次产出的小列表都存在了一个嵌套列表里,可以先用列表推导式把嵌套结构展平,再生成DataFrame:

import pandas as pd

# 假设这是你已经存储好的、所有循环产出的小列表集合
nested_loop_result = [
    [{'name':'kumar','job':'Plumber'},{'name':'Rajesh','job':'Painter'}],
    [{'name':'Jaslin','job':'Teacher'},{'name':'Ramu','job':'Engineer'}]
]

# 展平为单层级的字典列表
all_rows = [single_dict for small_list in nested_loop_result for single_dict in small_list]

# 生成目标DataFrame
df = pd.DataFrame(all_rows)

注意事项

  • 只要所有字典的键名保持一致,pandas会自动对齐列,不会出现列错位问题
  • 如果个别字典缺少某个键,pandas会自动在对应行的该列位置填充空值NaN,可后续按需做缺失值处理
  • 数据量较大时不要在每次循环中生成小DataFrame再做拼接,该写法性能极差,优先用先收集所有字典、一次性生成DataFrame的方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:39:06