Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
Ordenar marco de datos por longitud de cadena

Quiero ordenar por longitud de nombre. No parece haber un parámetro key para sort_values , por lo 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]})
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede usar la reindex del index de Series creado 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
over 4 years ago · Santiago Trujillo Denunciar

0

Usando DataFrame.sort_values con argumento key desde pandas >= 1.1.0 :

Ahora podemos pasar la longitud de la cadena o cualquier otra clave personalizada en el método sort_values :

 df = pd.DataFrame({ 'name': ['Steve', 'Al', 'Markus', 'Greg'], 'score': [2, 4, 2, 3] }) print(df) name score 0 Steve 2 1 Al 4 2 Markus 2 3 Greg 3
 df.sort_values(by="name", key=lambda x: x.str.len()) name score 1 Al 4 3 Greg 3 0 Steve 2 2 Markus 2
over 4 years ago · Santiago Trujillo Denunciar

0

Encontré esta solución más intuitiva, especialmente si quieres hacer algo dependiendo de la longitud de la columna más adelante.

 df['length'] = df['name'].str.len() df.sort_values('length', ascending=False, inplace=True)

Ahora su marco de datos tendrá una columna con la length del nombre con el valor de la longitud de la cadena del name de la columna y todo el marco de datos se ordenará en orden descendente.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda