按多列对慢速数据帧进行排序

时间:2019-05-09 16:35:07

标签: pandas sorting dataframe dask

我正在将pandas转换为dask,到目前为止,主要问题是排序。

用于使用nlargest进行简单排序的Im进行复杂排序的转换,例如:

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 :(得分:0)

尝试扩大对话范围:也许不是取代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的方法,也许有多种方法。