Ordenar el dataframe por longitud de cadena

Quiero ordenar por longitud de nombre. No parece haber un parámetro key para sort_values así que no estoy seguro de cómo lograrlo. Aquí hay una prueba df:

 import pandas as pd df = pd.DataFrame({'name': ['Steve', 'Al', 'Markus', 'Greg'], 'score': [2, 4, 2, 3]}) 

Puede usar la reindex del index de la Series creada por len con sort_values :

 print (df.name.str.len()) 0 5 1 2 2 6 3 4 Name: name, dtype: int64 print (df.name.str.len().sort_values()) 1 2 3 4 0 5 2 6 Name: name, dtype: int64 s = df.name.str.len().sort_values().index print (s) Int64Index([1, 3, 0, 2], dtype='int64') print (df.reindex(s)) name score 1 Al 4 3 Greg 3 0 Steve 2 2 Markus 2 

 df1 = df.reindex(s) df1 = df1.reset_index(drop=True) print (df1) name score 0 Al 4 1 Greg 3 2 Steve 2 3 Markus 2