¿Cómo ordenar el dataframe por una fila?

Tengo un dataframe:

import pandas as pd df = pd.DataFrame(data={'x':[7,1,9], 'y':[4,5,6],'z':[1,8,3]}, index=['a', 'b', 'c']) 

Muestra:

introduzca la descripción de la imagen aquí

Cómo ordenar este dataframe por fila [‘a’]: después de ordenar el dataframe, podría ser:

introduzca la descripción de la imagen aquí

 In [7]: df.iloc[:, np.argsort(df.loc['a'])] Out[7]: zyx a 1 4 7 b 8 5 1 c 3 6 9 

np.argsort devuelve los índices que se usarían para ordenar a fila, df.loc['a'] :

 In [6]: np.argsort(df.loc['a']) Out[6]: x 2 y 1 z 0 Name: a, dtype: int64 

Una vez que tenga esos índices, puede usarlos para reordenar las columnas de df (usando df.iloc ).

Puedes usar el método reindex_axis :

 >>> df.reindex_axis(sorted(df.columns, key=lambda x: df[x]['a']), axis=1) zyx a 1 4 7 b 8 5 1 c 3 6 9 

Puedes usar axis=1 cuando llamas sort :

 df.sort(axis=1, ascending=False) >> zyx a 1 4 7 b 8 5 1 c 3 6 9 

Tenga en cuenta que la sort no está en el lugar de forma predeterminada, por lo tanto, vuelva a asignar su valor de retorno o use inplace=True .

En v0.19 puedes ordenar por filas:

 pd.__version__ Out: '0.19.0rc1' df.sort_values(by='a', axis=1) Out: zyx a 1 4 7 b 8 5 1 c 3 6 9