【发布时间】:2020-12-31 10:04:43
【问题描述】:
我正在通过在 for 循环中连接来构建一个“主”数据帧
df = pd.concat([df, pd.DataFrame(listdf)], axis = 1)
listdf 是在连接到数据帧之前进行预处理的临时列表。 我面临的问题是随着循环迭代次数的增加,构建数据帧的过程变得越来越慢。
我在这里研究过,根据这个建议,建立一个列表然后最终将它连接到一个数据帧中要快得多 Why does concatenation of DataFrames get exponentially slower?
但是这种方法不起作用
interimdf.append(listdf)
df = pd.concat(interimdf)
我收到了这个错误
TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid
我该如何解决这个问题。还有一种替代方法可以加快循环创建一个大数据帧的过程
【问题讨论】:
-
listdf的类型是什么?
type(listdf)为此,listdf 必须使用 pd.Series 或 pd.DataFrame。 -
属于列表类型
-
我不确定这是否适合您,但请在此处查看您的帖子。试试这个
interimdf.append(pd.DataFrame(listdf)) -
效果非常好。现在火的很快。早些时候,我需要 3-4 小时来运行该循环,现在它在不到一秒的时间内完成。谢谢
-
太棒了。我很高兴这对你有用。是的,我会记住“二次复制”问题。我提交了解决方案。
标签: python pandas list dataframe loops