如何将嵌套循环生成的字典追加到同一pandas DataFrame中
报错原因
- 直接报错触发点:你调用
pd.concat()时传入了字典类型的dictionary参数,该方法仅支持拼接DataFrame、Series类型对象,不支持字典 - 逻辑问题:你在循环内重复创建DataFrame、重复执行拼接操作,不仅会导致结果不符合预期,还会大幅降低执行效率
修复实现
核心优化逻辑:先把每次循环生成的字典存入空列表,所有字典生成完成后一次性转换为DataFrame,pandas会自动把字典的键对齐为列名,满足你同键不同值的合并需求。
可直接运行的测试代码
import pandas as pd # 你的测试数据集 letts = [('a','b','c'),('e','f','g'),('h','i','j'),('k','l','m'),('n','o','p')] numns = [(1,2,3),(4,5,6),(7,8,9),(10,11,12),(13,14,15)] # 存储所有生成的字典 dict_buffer = [] for i in letts: for j in numns: # 每次生成的字典追加到缓冲区列表 dict_buffer.append(dict(zip(i, j))) # 一次性转换为DataFrame df_final = pd.DataFrame(dict_buffer) # 如果需要将键设为行索引,额外加一步转置即可: # df_final = pd.DataFrame(dict_buffer).T
结果说明
生成的df_final默认每行对应一次循环生成的字典、每列对应字典的键,缺失值自动填充为NaN。如果你的业务场景每次生成的字典是6个键,生成的DataFrame就会自动带6列数据,符合你的预期。
内容的提问来源于stack exchange,提问作者newbzzs
相关产品推荐
相关产品推荐

