Chr*_*xon 6 python append dataframe pandas
在读取不同文件的 for 循环中生成了数千个一致列的 dfs,我试图将它们合并/连接/附加到单个 df 中combined:
combined = pd.DataFrame()
for i in range(1,1000): # demo only
global combined
generate_df() # df is created here
combined = pd.concat([combined, df])
Run Code Online (Sandbox Code Playgroud)
最初速度很快,但随着combined增长速度减慢,最终变得慢得无法使用。这个关于如何追加行的答案解释了如何将行添加到字典然后创建 df 是最有效的,但我不知道如何使用to_dict.
对此有什么好方法吗?我是否以错误的方式处理这个问题?
Fra*_*asa 11
最快的方法是构建字典列表并在最后仅构建一次数据框:
rows = []
for i in range(1, 1000):
# Instead of generating a dataframe, generate a dictionary
dictionary = generate_dictionary()
rows.append(dictionary)
combined = pd.DataFrame(rows)
Run Code Online (Sandbox Code Playgroud)
正如此处的基准测试所证明的那样,这比连接数据帧快大约 100 倍。
您可以创建 DataFrame 列表,然后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)
Run Code Online (Sandbox Code Playgroud)