我有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
答案 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