Python 在循环中连接数据帧的速度非常慢
我通过在for循环中连接来构建一个“主”数据帧 listdf是连接到数据帧之前进行预处理的临时列表。 我面临的问题是,随着循环迭代次数的增加,构建数据帧的过程变得越来越慢 我在这里进行了研究,基于这个建议,构建一个列表并最终将其连接到一个数据帧要快得多 然而,这种方法不起作用Python 在循环中连接数据帧的速度非常慢,python,pandas,list,dataframe,loops,Python,Pandas,List,Dataframe,Loops,我通过在for循环中连接来构建一个“主”数据帧 listdf是连接到数据帧之前进行预处理的临时列表。 我面临的问题是,随着循环迭代次数的增加,构建数据帧的过程变得越来越慢 我在这里进行了研究,基于这个建议,构建一个列表并最终将其连接到一个数据帧要快得多 然而,这种方法不起作用 interimdf.append(listdf) df = pd.concat(interimdf) 我得到了这个错误 TypeError: cannot concatenate object of type '<
interimdf.append(listdf)
df = pd.concat(interimdf)
我得到了这个错误
TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid
TypeError:无法连接类型为“”的对象;只有Series和DataFrame OBJ有效
我如何解决这个问题。此外,还有另一种方法可以加快在循环中创建一个大数据帧的过程您需要将数据帧附加到列表中,而不是数据作为列表 尝试: 然后在你的圈子之外
pd.concat(interimdf)
listdf的类型是什么<代码>类型(listdf)若要使其工作,listdf必须由pd.Series或pd.DataFrame创建。它属于listdf类型。我不确定这是否适用于您,但请查看您在此处的帖子。试一下这个方法,它工作得非常好。
interimdf.append(pd.DataFrame(listdf))
。燃烧得很快。早些时候,我花了3-4个小时来运行这个循环,现在不到一秒钟就完成了。谢谢。我很高兴这对你有用。是的,我会记得“二次复制”问题。我提交了一份解决方案。
interimdf.append(pd.DataFrame(listdf))
pd.concat(interimdf)