如何在 dask DataFrame 上调用 unique()
How to call unique() on dask DataFrame
如何在 dask DataFrame 上调用 unique ?
如果我尝试以与常规 pandas 数据帧相同的方式调用它,我会收到以下错误:
In [27]: len(np.unique(ddf[['col1','col2']].values))
AttributeError Traceback (most recent call last)
<ipython-input-27-34c0d3097aab> in <module>()
----> 1 len(np.unique(ddf[['col1','col2']].values))
/dir/anaconda2/lib/python2.7/site-packages/dask/dataframe/core.pyc in __getattr__(self, key)
1924 return self._constructor_sliced(merge(self.dask, dsk), name,
1925 meta, self.divisions)
-> 1926 raise AttributeError("'DataFrame' object has no attribute %r" % key)
1927
1928 def __dir__(self):
AttributeError: 'DataFrame' object has no attribute 'values'
我不太熟悉 Dask,但它们似乎具有 Pandas 功能的一个子集,并且该子集似乎不包含 DataFrame.values 属性。
http://dask.pydata.org/en/latest/dataframe-api.html
你可以试试这个:
sum(ddf[['col1','col2']].apply(pd.Series.nunique, axis=0))
我不知道它在性能方面的表现如何,但它应该为您提供值(ddf DataFrame 中 col1 和 col2 中不同值的总数)。
对于Pandas和Dask.dataframe你应该使用drop_duplicates方法
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'x': [1, 1, 2], 'y': [10, 10, 20]})
In [3]: df.drop_duplicates()
Out[3]:
x y
0 1 10
2 2 20
In [4]: import dask.dataframe as dd
In [5]: ddf = dd.from_pandas(df, npartitions=2)
In [6]: ddf.drop_duplicates().compute()
Out[6]:
x y
0 1 10
2 2 20
如何在 dask DataFrame 上调用 unique ?
如果我尝试以与常规 pandas 数据帧相同的方式调用它,我会收到以下错误:
In [27]: len(np.unique(ddf[['col1','col2']].values))
AttributeError Traceback (most recent call last)
<ipython-input-27-34c0d3097aab> in <module>()
----> 1 len(np.unique(ddf[['col1','col2']].values))
/dir/anaconda2/lib/python2.7/site-packages/dask/dataframe/core.pyc in __getattr__(self, key)
1924 return self._constructor_sliced(merge(self.dask, dsk), name,
1925 meta, self.divisions)
-> 1926 raise AttributeError("'DataFrame' object has no attribute %r" % key)
1927
1928 def __dir__(self):
AttributeError: 'DataFrame' object has no attribute 'values'
我不太熟悉 Dask,但它们似乎具有 Pandas 功能的一个子集,并且该子集似乎不包含 DataFrame.values 属性。
http://dask.pydata.org/en/latest/dataframe-api.html
你可以试试这个:
sum(ddf[['col1','col2']].apply(pd.Series.nunique, axis=0))
我不知道它在性能方面的表现如何,但它应该为您提供值(ddf DataFrame 中 col1 和 col2 中不同值的总数)。
对于Pandas和Dask.dataframe你应该使用drop_duplicates方法
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'x': [1, 1, 2], 'y': [10, 10, 20]})
In [3]: df.drop_duplicates()
Out[3]:
x y
0 1 10
2 2 20
In [4]: import dask.dataframe as dd
In [5]: ddf = dd.from_pandas(df, npartitions=2)
In [6]: ddf.drop_duplicates().compute()
Out[6]:
x y
0 1 10
2 2 20