嵌套循环生成字典追加到pandas DataFrame时concat报错问题咨询
错误原因
pd.concat仅支持拼接Series、DataFrame类型的对象,你传入了dict类型触发类型不匹配错误- 循环内反复调用
concat会生成大量临时对象,性能极低,不推荐使用
正确实现方案
更高效的写法是先把所有循环生成的字典存入列表,最后一次性转为DataFrame再调整结构。
适配你提供的测试用例代码
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_list = [] for i in letts: for j in numns: current_dict = dict(zip(i, j)) dict_list.append(current_dict) # 转置后字典键会成为行索引,列对应每次迭代的结果 df_final = pd.DataFrame(dict_list).T
提示:如果需要字典键作为列名、每次迭代结果作为行,去掉末尾的
.T即可。
适配你最初业务逻辑的代码
import pandas as pd dict_list = [] for i in blahh: current_dict = dict(zip(blahh['x'][i], blahh['y'][i])) dict_list.append(current_dict) df_final = pd.DataFrame(dict_list).T
内容的提问来源于stack exchange,提问作者newbzzs
相关产品推荐
相关产品推荐

