合并操作正在占用全部RAM

时间:2019-07-08 07:05:12

标签: python-3.x pandas

我有20个CSV文件,最大大小为1 GB。在所有这些文件中,只有两个公共列“ X”,“ Y”。我正在尝试在[“ X”,“ Y”]上合并这些文件,以获取包含所有列的单个文件。但是,这样做时,合并10个文件后出现 MemoryError
请帮助我找到解决方法。
请找到以下规格:

RAM: 504 GB
CPU: 160 Core
Python Version: 3.7.0
Pandas Version: 0.23.4

示例代码:

final_df = pd.DataFrame()
for f in file_list:
    df = pd.read_csv(f)
    if final_df.empty:
        final_df = df
    else:
        final_df = final_df.merge(df, on = ["X","Y"], how = "left")
return final_df

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用垃圾收集器“ gc.collect()”手动释放内存?您可以在每个循环结束时这样做,就像这样:

import gc

final_df = pd.DataFrame()
for f in file_list:
    df = pd.read_csv(f)
    if final_df.empty:
        final_df = df
    else:
        final_df = final_df.merge(df, on = ["X","Y"], how = "left")

    gc.collect()

return final_df