我正在处理大量数据,行数约为5000万。 我想从多列中找到唯一的列值。我使用下面的脚本。
dataAll[['Frequency', 'Period', 'Date']].drop_duplicates()
但这需要很长时间,超过40分钟。
我找到了一些替代方案:
pd.unique(dataAll[['Frequency', 'Period', 'Date']].values.ravel('K'))
但是上面的脚本会给出数组,但我需要在数据帧中像第一个脚本一样给出如下
答案 0 :(得分:1)
通常,您的新代码无法转换为DataFrame
,因为:
pd.unique(dataAll[['Frequency', 'Period', 'Date']].values.ravel('K'))
创建一个大1d numpy array
,因此删除重复项后无法重新创建行。
E.g。如果有2个唯一值3
且1
无法找到3
和1
的日期时间。
但是,如果Frequency
只有一个唯一值,并且每个Period
都可以找到样本中的Date
,则可以采用解决方案。
编辑:
一种可能的替代方法是使用dask.dataframe.DataFrame.drop_duplicates
。