The improved Categorical support in pandas version 0.15 allows you to do this easily:
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
If this is only a temporary order, then keeping the LSE column as a Categorical may not be what you want, but if this ordering is what you want to be able to use several times in different contexts, Categoricals is a great solution.
Marius
source share