我面临一个问题,我必须在循环中生成大型DataFrames(每次两次2000 x 800 pandas DataFrames时计算50次迭代).我想将结果保存在更大的DataFrame或类似字典的结构中.使用pandas.concat时,我在循环中的某个时刻出现内存错误.使用numpy.append将结果存储在numpy数组的字典中而不是DataFrame中时,会发生同样的情况.在这两种情况下,我仍然有很多可用内存(几GB).对于大熊猫或numpy来说,这个数据太多了吗?有没有更节省内存的方法来存储我的数据而不将其保存在磁盘上?
例如,以下脚本一旦nbIds大于376 就会失败:
import pandas as pd
import numpy as np
nbIds = 376
dataids = range(nbIds)
dataCollection1 = []
dataCollection2 = []
for bs in range(50):
newData1 = pd.DataFrame( np.reshape(np.random.uniform(size =
2000 * len(dataids)),
(2000,len(dataids ))))
dataCollection1.append( newData1 )
newData2 = pd.DataFrame( np.reshape(np.random.uniform(size =
2000 * len(dataids)),
(2000,len(dataids ))))
dataCollection2.append( newData2 )
dataCollection1 = pd.concat(dataCollection1).reset_index(drop = True)
dataCollection2 = pd.concat(dataCollection2).reset_index(drop = True)
Run Code Online (Sandbox Code Playgroud)
当nbIds665或更高时,以下代码失败
import pandas as pd
import numpy as np …Run Code Online (Sandbox Code Playgroud)