Python DataFrame.loc泄漏内存

Python DataFrame.loc泄漏内存,python,memory-leaks,pandas,dataframe,Python,Memory Leaks,Pandas,Dataframe,通过这段代码,我发现了另一个与熊猫有关的内存泄漏: import pandas as pd store = pd.HDFStore(hdf[0]) par = store[hdf[1]][:, hdf[2]] store.close() for pixel in pix_fac.itervalues(): fac = pixel[4][::2] meas = array(par.loc[fac]) 100%的计算机内存在几秒钟内就能到达,冻结了一切。我使用

通过这段代码,我发现了另一个与熊猫有关的内存泄漏:

  import pandas as pd
  store = pd.HDFStore(hdf[0])
  par = store[hdf[1]][:, hdf[2]]
  store.close()

  for pixel in pix_fac.itervalues():
    fac = pixel[4][::2]
    meas = array(par.loc[fac])
100%的计算机内存在几秒钟内就能到达,冻结了一切。我使用的是Debian2.30,Intel i5,8GB内存

我认为这与以下问题有关:


有人知道我该怎么处理这个泄漏?我确实必须使用.loc方法在每次迭代中检索特定参数。

您可以偶尔尝试
gc.collect()

<> >:>代码> PAR= PAL.t/COD>,并选择通过<代码> PAR[FAC] < /代码>。这样,您就不会每次都取一个横截面,根据定义,它将在您保留对它的引用时创建一个副本(并且很容易保持内存分配)


更好的做法是重构此计算以避免这种类型的选择并将其矢量化。

实际上,我发现如果我将浮点值输入到.loc中,但索引是整数(反之亦然),pandas不会返回错误,而是建立了内存。奇怪的行为。你不应该使用浮点值作为索引器,它现在可以工作,但将来会被弃用。很难看到你在做什么,没有显示更多的代码/结构。是的,我明白了。使用Float作为索引是一个错误。我把一切都转换成整数。我偶然发现了这个错误,这就是为什么我没有在问题中强调它。