drop_duplicates python 3.6的替代方案

时间:2018-06-09 08:19:08

标签: python python-3.x pandas dataframe unique

我正在处理大量数据,行数约为5000万。 我想从多列中找到唯一的列值。我使用下面的脚本。

dataAll[['Frequency', 'Period', 'Date']].drop_duplicates()

但这需要很长时间,超过40分钟。

我找到了一些替代方案:

pd.unique(dataAll[['Frequency', 'Period', 'Date']].values.ravel('K'))

enter image description here

但是上面的脚本会给出数组,但我需要在数据帧中像第一个脚本一样给出如下

enter image description here

1 个答案:

答案 0 :(得分:1)

通常,您的新代码无法转换为DataFrame,因为:

pd.unique(dataAll[['Frequency', 'Period', 'Date']].values.ravel('K'))

创建一个大1d numpy array,因此删除重复项后无法重新创建行。

E.g。如果有2个唯一值31无法找到31的日期时间。

但是,如果Frequency只有一个唯一值,并且每个Period都可以找到样本中的Date,则可以采用解决方案。

编辑:

一种可能的替代方法是使用dask.dataframe.DataFrame.drop_duplicates