Альтернатива для drop_duplicates python 3.6 - PullRequest
0 голосов
/ 09 июня 2018

Я работаю над огромным объемом данных, строк около 50 миллионов.Я хочу найти уникальные значения столбцов из нескольких столбцов.Я использую приведенный ниже скрипт.

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 голосов
/ 09 июня 2018

Как правило, ваш новый код невозможно преобразовать в DataFrame, потому что:

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

создайте один большой 1d numpy array, поэтому после удаления дубликатов невозможно воссоздать строки.

Например, если есть 2 уникальных значения 3 и 1, невозможно найти, какие даты относятся к 3 и 1.


Но если есть толькоодно уникальное значение для Frequency и для каждого Period возможно найти Date, как в примере, возможно решение.

РЕДАКТИРОВАТЬ:

Одной из возможных альтернатив является использование dask.dataframe.DataFrame.drop_duplicates.

...