ordenar pandas dataframe basado en la lista

Me gustaría ordenar el siguiente dataframe:

Region LSE North South 0 Cn 33.330367 9.178917 1 Develd -36.157025 -27.669988 2 Wetnds -38.480206 -46.089908 3 Oands -47.986764 -32.324991 4 Otherg 323.209834 28.486310 5 Soys 34.936147 4.072872 6 Wht 0.983977 -14.972555 

Me gustaría ordenarlo para que la columna LSE se reordene según la lista:

 lst = ['Oands','Wetnds','Develd','Cn','Soys','Otherg','Wht'] 

Por supuesto, las otras columnas también deberán ser reordenadas en consecuencia. ¿Hay alguna manera de hacer esto en los pandas?

El soporte mejorado para Categorical en pandas versión 0.15 le permite hacer esto fácilmente:

 df['LSE_cat'] = pd.Categorical( df['LSE'], categories=['Oands','Wetnds','Develd','Cn','Soys','Otherg','Wht'], ordered=True ) df.sort('LSE_cat') Out[5]: Region LSE North South LSE_cat 3 3 Oands -47.986764 -32.324991 Oands 2 2 Wetnds -38.480206 -46.089908 Wetnds 1 1 Develd -36.157025 -27.669988 Develd 0 0 Cn 33.330367 9.178917 Cn 5 5 Soys 34.936147 4.072872 Soys 4 4 Otherg 323.209834 28.486310 Otherg 6 6 Wht 0.983977 -14.972555 Wht 

Si esto es solo una ordenación temporal, entonces mantener la columna LSE como Categorical puede no ser lo que desea, pero si esta ordenación es algo que desea poder usar varias veces en diferentes contextos, las Categoricals son una gran solución. .


En versiones posteriores de pandas , sort , ha sido reemplazado por sort_values , por lo que necesitarías en su lugar:

 df.sort_values('LSE_cat')