Сортировка dask-данных по нескольким столбцам по возрастанию, по убыванию - PullRequest
2 голосов
/ 09 мая 2019

Я конвертирую pandas в dask, основная проблема на данный момент заключается в сортировке.

Для преобразования простых сортировок я использую nlargest для сложной сортировки, например:

df = df.sort_values(
            by=['column_1', 'column_2', 'column_3', 'column_4', 'column_5', 'column_6', 'column_7'],
            ascending=[1, 0, 0, 0, 0, 0, 0]
        )

Я перевожу в панд, а затем обратно в сумрак: dd.from_pandas

для этого: ar = ar.sort_values(by=['column_1', 'column_2'], ascending=[1, 0])

Я не знаю, что делать

Я предполагаю, что преобразование в панд и обратно в сумрак замедляет вещи (даже не подозревая, насколько это ужасно)

Может ли nlargest справиться с этим? Я не вижу, как сделать один столбец по убыванию, а другой по возрастанию.

1 Ответ

0 голосов
/ 09 мая 2019

Попытка расширить разговор: возможно, речь идет не о замене sort_values, а о переписывании всего этого в dask дружественном способе:

После того, как:

ar = ar.sort_values(by=['column_1', 'column_2'], ascending=[1, 0])

пришел:

ar = ar.groupby(['column_1']).first()

Эти две строки можно переписать в одну dask дружественную строку:

ar = ar.groupby(['column_1']).agg({'column_2': 'max'})

Я не считаю это ответом на вопрос, все еще ищу способы справиться с sort_values, возможно, есть несколько способов.

...