首页 > 解决方案 > 在 Dask 数据帧上分组,然后按一列排序

问题描述

想象一个包含两列的简单 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

问题是我将如何按第一列排序?

标签: pandas-groupbydask

解决方案


一种方法是在compute之后调用sort_index

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

现在(在value_counts之后)结果相对较小,因此无需在dask级别对其进行排序。

另一种选择(无论如何要在dask级别进行)是:

  • 转换为 DataFrame(单列),
  • 重置索引,使索引成为常规列(这个新列默认命名为index),
  • 将索引设置回索引列,这是实际发生排序的时刻,
  • (可选)挤压它以转换回Series
  • 计算结果。

所以整个代码可以是:

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

推荐阅读