Python dask 懒惰地迭代 series.unique() 值
Python dask iterate series.unique() values lazily
我正在使用 python 2.7 和 dask 数据帧
我有一个 df,它对于内存来说太大了,但很适合放入磁盘。
我按索引分组,然后需要遍历这些组,我找到了 怎么做。
当我尝试使用建议的代码时:
for value in drx["col"].unique():
print value
我收到一个错误
File "/usr/local/lib/python2.7/dist-packages/dask/dataframe/core.py",
line 1709, in getitem
raise NotImplementedError() NotImplementedError
假设它没有实现,我发现使用 unique() 迭代我得到的系列的方法是 this
但是当我尝试这样使用它时:
data = table["col"].unique()
it = data.iteritems()
for val in it:
print 1
只要我使用迭代器,我的内存就会爆炸,就好像所有列的值都保存在内存中一样。
如何使用迭代器值而不将它们全部保存到内存中?
如果所有唯一值都适合内存,则预先调用计算
for item in df[col].unique().compute()
...
否则我建议用镶木地板之类的东西写入磁盘,然后迭代它
df[col].unique(split_out=10).to_parquet(...)
s = dd.read_parquet(...)
for item in s.iteritems():
...
我正在使用 python 2.7 和 dask 数据帧
我有一个 df,它对于内存来说太大了,但很适合放入磁盘。
我按索引分组,然后需要遍历这些组,我找到了
当我尝试使用建议的代码时:
for value in drx["col"].unique():
print value
我收到一个错误
File "/usr/local/lib/python2.7/dist-packages/dask/dataframe/core.py", line 1709, in getitem raise NotImplementedError() NotImplementedError
假设它没有实现,我发现使用 unique() 迭代我得到的系列的方法是 this
但是当我尝试这样使用它时:
data = table["col"].unique()
it = data.iteritems()
for val in it:
print 1
只要我使用迭代器,我的内存就会爆炸,就好像所有列的值都保存在内存中一样。
如何使用迭代器值而不将它们全部保存到内存中?
如果所有唯一值都适合内存,则预先调用计算
for item in df[col].unique().compute()
...
否则我建议用镶木地板之类的东西写入磁盘,然后迭代它
df[col].unique(split_out=10).to_parquet(...)
s = dd.read_parquet(...)
for item in s.iteritems():
...