Python dask 延迟迭代series.unique()值

标签 python database dataframe bigdata dask

我正在使用 python 2.7 和 dask dataframe

我有一个 df 对于内存来说太大了,但可以完美地放入磁盘。

我按索引进行分组,然后需要迭代这些组,我发现 here怎么做。

当我尝试使用建议的代码时:

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()
    ...

否则,我建议使用 parquet 等内容写入磁盘,然后进行迭代

df[col].unique(split_out=10).to_parquet(...)
s = dd.read_parquet(...)
for item in s.iteritems():
    ...

关于Python dask 延迟迭代series.unique()值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47119525/

相关文章:

MySQL - 我应该使用什么数据类型来存储一组字符串

Python - 这是初始化空集矩阵的正确方法吗?

python - matplotlib 对 x Axis 的值进行分组

python - 如何获取为1的列的id

Java - 错误 : A JNI error has occurred, ... 在线程 "main"java.lang.UnsupportedClassVersionError 中:

database - MongoDB 如何从$lookup 远程集合中$project(限制字段)?

python - 随机排列 DataFrame 的行,直到列中的所有连续值都不同?

python - 通过列/值对列表追加列

python - 计算 Pandas Dataframe 中两个日期之间的 GroupBy 内的行数

python - 如何了解quadpack使用的集成技术