Python 如何高效地压缩for循环生成的数千个数据帧?

Python 如何高效地压缩for循环生成的数千个数据帧?,python,pandas,dataframe,append,Python,Pandas,Dataframe,Append,在读取不同文件的for循环中生成了数千个一致列的df,我正在尝试将它们合并/合并/追加到单个df中,组合起来: combined = pd.DataFrame() for i in range(1,1000): # demo only global combined generate_df() # df is created here combined = pd.concat([combined, df]) 最初速度很快,但随着组合的增长,速度会变慢,最终会变得非常慢

在读取不同文件的for循环中生成了数千个一致列的df,我正在尝试将它们合并/合并/追加到单个df中,
组合起来

combined = pd.DataFrame()

for i in range(1,1000): # demo only
    global combined
    generate_df() # df is created here
    combined = pd.concat([combined, df])
最初速度很快,但随着<代码>组合<代码>的增长,速度会变慢,最终会变得非常慢。解释如何将行添加到dict,然后创建df是最有效的,但我不知道如何使用
to_dict
来实现这一点


有什么好办法?我是不是走错了路?

您可以创建数据帧列表,然后只使用
concat
一次:

dfs = []

for i in range(1,1000): # demo only
    global combined
    generate_df() # df is created here
    dfs.append(df)

combined = pd.concat(dfs)

您可以创建数据帧列表,然后仅使用一次
concat

dfs = []

for i in range(1,1000): # demo only
    global combined
    generate_df() # df is created here
    dfs.append(df)

combined = pd.concat(dfs)

最快的方法是建立一个字典列表,最后只建立一次数据帧:

行=[]
对于范围(1000)内的i:
#生成字典而不是生成数据帧
dictionary=generate_dictionary()
行追加(字典)
组合=pd.DataFrame(行)

这比连接数据帧快大约100倍,正如所证明的。

最快的方法是建立一个字典列表,并在末尾只建立一次数据帧:

行=[]
对于范围(1000)内的i:
#生成字典而不是生成数据帧
dictionary=generate_dictionary()
行追加(字典)
组合=pd.DataFrame(行)

这比连接数据帧快大约100倍,正如。

啊,太棒了。我错误地认为将相同名称的dfs附加到列表中是行不通的,但这是完美的。非常感谢。啊,太棒了。我错误地认为将相同名称的dfs附加到列表中是行不通的,但这是完美的。非常感谢。