如何解决“并非所有部门都知道”的错误?

时间:2018-05-01 12:49:19

标签: dask

我正在尝试使用groupby过滤Dask数据框。

df = df.set_index('ngram');
sizes = df.groupby('ngram').size();
df = df[sizes > 15];

但是,df.head(15)会引发错误ValueError: Not all divisions are known, can't align partitions. Please use `set_index` to set the index.sizes上的分歧未知:

>>> df.known_divisions
True
>>> sizes.known_divisions
False

解决方法是执行sizes.compute().to_csv(...),然后使用dd.from_pandasdd.read_csv将其读回Dask。然后sizes.known_divisions将返回True。这是一个值得注意的不便。

如何才能解决这个问题?我使用Dask错了吗?

注意:有一个未答复的公告here

1 个答案:

答案 0 :(得分:0)

在您使用的常见情况下,似乎您的索引系列实际上 小于您要应用它的源数据帧。在这种情况下,实现它并使用如下的简单索引是有意义的:

df = pd.DataFrame({'ngram': np.random.choice([1, 2, 3], size=1000),
     'other': np.random.randn(1000)})  # fake data
d = dd.from_pandas(df, npartitions=3)
sizes = d.groupby('ngram').size().compute()
d = d.set_index('ngram')  # also sorts the divisions
ngrams = sizes[sizes > 300].index.tolist()  # a list of good ngrams
d.loc[ngrams].compute()