【发布时间】:2018-11-17 07:19:23
【问题描述】:
我正在编写一个脚本,它将我的模拟数据添加到一个 pandas 数据框中,以便在我的循环中进行 n 次模拟。当我选择 n >~15 的值时,它会崩溃,我认为我的 df 在运行模拟时变得太大而无法存储在内存中。
我创建了一个空的 DF
df = pd.DataFrame(
{'gamma': [],
'alpha': [],
'focus': [],
'X' : [],
'Y' : [],
'Z' : [],
'XX' : [],
'img1' : [],
'img2' : [],
'num_samples' : [],
'resolution' : []})
for i in range(n):
#some simulation stuffs
然后用值填充我的数据框
df.loc[i] = (
{'gamma': gamma,
'alpha': alpha,
'focus': focus,
'X' : X,
'Y' : Y,
'Z' : Z,
'XX' : XX,
'img1' : img1,
'img2' : img2,
'num_samples' : num_samples,
'resolution' : resolution})
我运行了 n 次来填充我的 df 然后保存它。然而它一直在崩溃。我认为 dask.dataframe 在这里可能很好:
df = dd.from_pandas(pd.DataFrame(
{'gamma': [],
'alpha': [],
'focus': [],
'X' : [],
'Y' : [],
'Z' : [],
'XX' : [],
'img1' : [],
'img2' : [],
'num_samples' : [],
'resolution' : []
}), chunksize=10)
然后填充我的数据
df.loc[i] = {'probe': wave.array.real,
'gamma': gamma,
'alpha': alpha,
'focus': focus,
'X' : X,
'Y' : Y,
'Z' : Z,
'XX' : X,
'img1' : img1,
'img2' : img2,
'num_samples' : num_samples,
'resolution' : resolution}
但是我收到一个错误'_LocIndexer' object does not support item assignment
我考虑过在循环中保存创建 pd.df 并为每个模拟值保存它。但这似乎效率低下,我认为我应该能够在 dask 内完成。
有什么建议吗?
如果有帮助,我正在操作 Windows、20 GB RAM、SSD、i7
【问题讨论】:
标签: python pandas dataframe dask