2016-11-28 6 views
1

dask DataFrameでuniqueを呼び出すにはどうすればよいですか?dask DataFrameでunique()を呼び出す方法

私は定期的なパンダのデータフレームの場合と同じ方法でそれを呼び出すしようとすると、次のエラーが表示されます。

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' 
+0

ウィルない 'lenは(np.unique(DDF [[ 'COL1' 'col2に']]))'自体にdrop_duplicatesメソッドを使用する必要があります作業? –

+0

これは、 'np.unique(ddf [['col1'、 'col2']))'の出力が '配列([dd.DataFrame ]、dtype = object) ' – femibyte

+0

欲しい結果は何ですか?複製された行を2列のサブセットで削除しますか? – thebeancounter

答えて

3

両方パンダとDask.dataframeについて、あなたは

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 
+0

これはうまくいきました。 – femibyte

0

私はDASKとあまり慣れていないんだけど、彼らはパンダのサブセットを持っているように見えますそのサブセットにはDataFrame.values属性が含まれていないようです。

http://dask.pydata.org/en/latest/dataframe-api.html

あなたはこの試みることができる:

sum(ddf[['col1','col2']].apply(pd.Series.nunique, axis=0)) 

を私はどのように運賃の性能面わかりませんが、それは価値を提供すべきである(COL1内の個別値の合計数と、 col2をddf DataFrameから取得します)。

+0

dask dataframe applyがまだ軸= 0に実装されていません... – thebeancounter

関連する問題