Dask DataFrame equivalente de pandas DataFrame sort_values

¿Cuál sería el equivalente de sort_values ​​en pandas para un Datakrame de dask? Estoy tratando de escalar algunos códigos Pandas que tienen problemas de memoria para usar un DataFrame dask en su lugar.

Sería el equivalente:

ddf.set_index([col1, col2], sorted=True) 

?

La clasificación en paralelo es difícil. Tienes dos opciones en Dask.dataframe

set_index

Como ahora, puede llamar a set_index con un único índice de columna:

 In [1]: import pandas as pd In [2]: import dask.dataframe as dd In [3]: df = pd.DataFrame({'x': [3, 2, 1], 'y': ['a', 'b', 'c']}) In [4]: ddf = dd.from_pandas(df, npartitions=2) In [5]: ddf.set_index('x').compute() Out[5]: y x 1 c 2 b 3 a Unfortunately dask.dataframe does not (as of November 2016) support multi-column indexes In [6]: ddf.set_index(['x', 'y']).compute() NotImplementedError: Dask dataframe does not yet support multi-indexes. You tried to index with this index: ['x', 'y'] Indexes must be single columns only. 

más grande

Dada la forma en que formuló su pregunta, sospecho que esto no se aplica a usted, pero a menudo los casos que utilizan la clasificación pueden subsistir con la solución mucho más barata que la nlargest .

 In [7]: ddf.x.nlargest(2).compute() Out[7]: 0 3 1 2 Name: x, dtype: int64 In [8]: ddf.nlargest(2, 'x').compute() Out[8]: xy 0 3 a 1 2 b 

Usaría este código para agregar una nueva columna compuesta y establecer un índice:

 newcol = ddf.col1 + "|" + ddf.col2 ddf = ddf.assign(ind=newcol) ddf = ddf.set_index('ind', sorted=True) 

Si el dataframe se ordenó por (col1, col2), entonces se ordenará por newcol para que pueda usar ordenado = Verdadero.