当我在Dask数据帧中使用isin时会引发NotImplementedError

时间:2019-03-19 17:58:08

标签: python dask

假设我有两个简单的数据帧:

import dask.dataframe as dd 
import pandas as pd

dd_1 = dd.from_pandas(pd.DataFrame({'a': [1, 2,3], 'b': [6, 7, 8]}), npartitions=1)

dd_2 = dd.from_pandas(pd.DataFrame({'a': [1, 2, 5], 'b': [3, 7, 1]}), npartitions=1)

现在,我想使用第二个列中的值过滤第一个:

dd_1[dd_1.a.isin(dd_2.a)]

当我尝试执行此操作时,会引发以下错误:

NotImplementedError                       Traceback (most recent call last)
<ipython-input-38-850f035e0842> in <module>
----> 1 dd_1[dd_1.a.isin(dd_2.a)]

/usr/local/lib/python3.7/site-packages/dask/dataframe/core.py in isin(self, values)
   2113     @derived_from(pd.Series)
   2114     def isin(self, values):
-> 2115         return elemwise(M.isin, self, list(values))
   2116 
   2117     @insert_meta_param_description(pad=12)

/usr/local/lib/python3.7/site-packages/dask/dataframe/core.py in __getitem__(self, key)
   2045             graph = HighLevelGraph.from_collections(name, dsk, dependencies=[self, key])
   2046             return Series(graph, name, self._meta, self.divisions)
-> 2047         raise NotImplementedError()
   2048 
   2049     @derived_from(pd.DataFrame)

NotImplementedError: 

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用最新版本的dask (2.9.1)时,我个人的解决方法是将第二个series(在您的情况下为dd_2.a)转换为pandas