Python 如何高效地压缩for循环生成的数千个数据帧?
在读取不同文件的for循环中生成了数千个一致列的df,我正在尝试将它们合并/合并/追加到单个df中,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]) 最初速度很快,但随着组合的增长,速度会变慢,最终会变得非常慢
组合起来
:
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附加到列表中是行不通的,但这是完美的。非常感谢。