gpt4 book ai didi

python - 在循环迭代结束时删除 python pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:38 24 4
gpt4 key购买 nike

我正在尝试对一堆 pandas 数据帧应用相同的处理方法。

由于这些数据帧很大,我没有足够的内存来同时加载它们。所以我有一个包含它们各自位置的列表,我想一一加载和分析它们。

但是,每次迭代都会使用越来越多的内存。我猜数据帧在迭代结束时不会被删除。我不知道如何解决它。

这是我的代码:

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 dfdf=None
  • 将 for 循环转换为函数并调用其上的 map 函数
  • 在循环末尾使用 gc 包中的gc.collect() 函数

有人知道如何在迭代结束时删除我的 df 或替代解决方案吗?

非常感谢。

最佳答案

del 语句只会删除名称。您必须手动进行垃圾收集才能从内存中删除数据帧。试试这个:

导入GCgc.collect()

关于python - 在循环迭代结束时删除 python pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52372930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com