Группировать на Dask DataFrame затем сортировать по одному столбцу - PullRequest
0 голосов
/ 17 апреля 2020

Представьте себе простой набор данных Dask с двумя столбцами: - Дата транзакции - Сумма транзакции

Все, что я хочу знать, - это как группировать по дате транзакции и показывать количество транзакций в день. Я хочу, чтобы полученный фрейм данных был отсортирован по дате транзакции или по количеству. Вот мой код:

df = taxi_data.Date.value_counts().compute()

, и результат выглядит так: 2019-01-25 291288 2019-01-11 290607 2019-01-31 283724 2019-01-17 283409 2019-01-24 280805 2019-01-10 280648 Name: Date, dtype: int64

Вопрос в том, как бы отсортировать это по первому столбцу?

1 Ответ

0 голосов
/ 18 апреля 2020

В одну сторону это вызвать sort_index после вычислить .

taxi_data.Date.value_counts().compute().sort_index()

Сейчас (после value_counts ) результат относительно невелик, поэтому нет необходимости сортировать его на уровне dask .

Другой вариант (сделать это при уровень dask в любом случае) должен:

  • преобразовать в DataFrame (с одним столбцом),
  • сбросить индекс, чтобы индекс стал обычный столбец (этот новый столбец по умолчанию называется index ),
  • установить индекс обратно в index столбец, это момент сортировка действительно происходит,
  • (опционально) squeeze для преобразования обратно в Series ,
  • для вычисления результата.

Таким образом, весь код может быть:

taxi_data.Date.value_counts().to_frame()\
    .reset_index().set_index('index').squeeze().compute()
...