我正在尝试对一堆熊猫数据框应用相同的处理方法。
由于这些数据帧很大,因此我没有足够的内存来同时加载它们。因此,我有一个列表,列出了它们各自的位置,我想一一加载并分析它们。
但是,每次迭代都会使用越来越多的内存。我猜数据帧不会在迭代结束时删除。我不知道如何解决。
这是我的代码:
folder = 'my/folder'
colors = ['b', 'r']
for i, f in enumerate(glob.glob(folder+'*.txt')):
print(f)
df = pd.read_table(f, index_col=False, header=None, delimiter="\t", names=['chr', 'x', 'y'])
plt.figure(figsize=(32, 8))
for j, chrm in enumerate(df.chr.unique()):
plt.plot(df.loc[df.chr == chrm].x, df.loc[df.chr == chrm].y, label=chrm, color=colors[j])
plt.ylim(0, 200)
plt.legend()
我必须补充一点,就是我在Spyder工作。
到目前为止,我已经尝试过:
del df
和df=None
map
函数gc.collect()
包中的gc
函数有人知道如何在迭代末尾或其他解决方案中删除我的df吗?
非常感谢。
答案 0 :(得分:0)
del语句只会删除名称。您将必须手动进行垃圾回收才能从内存中删除数据帧。试试这个:
导入gc gc.collect()