dask df.col.unique() 与 df.col.drop_duplicates()

Dan*_*ler 6 dask

在 dask 和有什么区别

df.col.unique()
Run Code Online (Sandbox Code Playgroud)

df.col.drop_duplicates()
Run Code Online (Sandbox Code Playgroud)

两者都返回一个包含 的唯一元素的系列df.col。索引有所不同,unique结果由 1..Ndrop_duplicates索引,而由任意外观的数字序列索引。

返回的索引的意义是什么drop_duplicates

如果索引不重要,是否有任何理由使用一个而不是另一个?

MRo*_*lin 7

Dask.dataframe 两者都有,因为 Pandas 两者都有,而 dask.dataframe 主要是复制 Pandas API。Unique 是 Pandas 使用 Numpy 的历史遗留物。

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({'x': [1, 2, 1], 'y': [1., 2., 3.]}, index=pd.Index(['a', 'b', 'A'], name='I'))

In [3]: df.x.drop_duplicates()
Out[3]: 
I
a    1
b    2
Name: x, dtype: int64

In [4]: df.x.unique()
Out[4]: array([1, 2])
Run Code Online (Sandbox Code Playgroud)

在 dask.dataframe 中,我们稍微偏离并选择使用 adask.dataframe.Series而不是 adask.array.Array因为无法预先计算数组的长度,因此不能懒惰地采取行动。

在实践中几乎没有理由unique过度使用drop_duplicates

  • 使用`unique` 的一个原因是它返回一个`numpy.ndarray` 而不是pandas 系列。 (4认同)