我有以下工作流程,我将数据附加到一个空的 Pandas 系列对象。 (这个空数组也可以是一个 NumPy 数组,甚至是一个基本列表。)
in_memory_array = pd.Series([])
for df in list_of_pandas_dataframes:
new = df.apply(lambda row: compute_something(row), axis=1) ## new is a pandas.Series
in_memory_array = in_memory_array.append(new)
我的问题是结果数组
in_memory_array
变得对于 RAM 来说太大了。我不需要将所有对象都保存在内存中以进行此计算。我认为我的选择是以某种方式将对象酸洗到磁盘,一旦数组对于 RAM 来说太大,例如
# N = some size in bytes too large for RAM
if sys.getsizeof(in_memory_array) > N:
with open('mypickle.pickle', 'wb') as f:
pickle.dump(in_memory_array, f)
否则,是否有核外解决方案?最好的情况是创建一些上限,以便对象在 RAM 中的增长不能超过 X GB。
最佳答案
查看这个 python 库:https://pypi.org/project/wendelin.core/
它允许您使用大于 RAM 和本地磁盘的阵列。
关于python - Numpy 数组大于 RAM : write to disk or out-of-core solution?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60871793/