Cómo clasificar Pandas DataFrame por los valores de una columna

  1. DataFrame Orden de clasificación - Argumento ascending
  2. dtaframe Orden de clasificación - Argumento na_position
Cómo clasificar Pandas DataFrame por los valores de una columna

Introduciremos el método pandas.DataFrame.sort_values para ordenar los valores del DataFrame, y sus opciones como ascending para especificar el orden de ordenación y na_position que determina la posición de NaN en el resultado ordenado.

Considera el siguiente DataFrame,

Python
 pythonCopyimport pandas as pd

df = pd.DataFrame(
    {
        "col1": ["g", "t", "n", "w", "n", "g"],
        "col2": [5, 2, 5, 1, 3, 6],
        "col3": [0, 7, 2, 8, 1, 2],
    }
)
print(df)

Si ejecutas este código obtendrás la siguiente salida que aún no está ordenada.

 blankCopy    col1  col2  col3
0    g     5     0
1    t     2     7
2    n     5     2
3    w     1     8
4    n     3     1
5    g     6     2

Ahora podríamos ordenar el DataFrame con los códigos de abajo.

Python
 pythonCopyimport pandas as pd

df = pd.DataFrame(
    {
        "col1": ["g", "t", "n", "w", "n", "g"],
        "col2": [5, 2, 5, 1, 3, 6],
        "col3": [0, 7, 2, 8, 1, 2],
    }
)
print(df.sort_values(by=["col1"]))

Ordenamos el DataFrame por col1. Después de ejecutar el código anterior obtendrás la siguiente resultado.

 blankCopy    col1  col2  col3
0    g     5     0
5    g     6     2
2    n     5     2
4    n     3     1
1    t     2     7
3    w     1     8

Podemos usar más de una columna para ordenar también. Cambiemos la última línea de los códigos anteriores de la siguiente manera,

Python
 pythonCopyprint(df.sort_values(by=["col1", "col2"]))

Después de ejecutar el código obtendremos la siguiente salida.

 blankCopy    col1  col2  col3
0    g     5     0
5    g     6     2
4    n     3     1
2    n     5     2
1    t     2     7
3    w     1     8

Ahora DataFrame está ordenado por col2 también.

DataFrame Orden de clasificación - Argumento ascending

Por defecto la clasificación es en orden ascendente, para ordenar el DataFrame en orden descendente, necesitamos poner la bandera ascending=False.

Python
 pythonCopyprint(df.sort_values(by=["col1", "col2"], ascending=False))

Después de ejecutar el código obtendremos la siguiente resultado.

 blankCopy    col1  col2  col3
3    w     1     8
1    t     2     7
2    n     5     2
4    n     3     1
5    g     6     2
0    g     5     0

dtaframe Orden de clasificación - Argumento na_position

La na_position especifica la posición de la Na después de la clasificación, es decir, last pone la NaN al final. Su valor por defecto es first que pone NaN al principio del resultado ordenado.

Considere el siguiente DataFrame,

Python
 pythonCopyimport numpy as np
import pandas as pd

s = pd.Series([np.nan, 2, 4, 10, 7])
print(s.sort_values(na_position="last"))

Después de ejecutar el código obtendremos el siguiente resultado.

 blankCopy1     2.0
2     4.0
4     7.0
3    10.0
0     NaN
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete

Artículo relacionado - Pandas DataFrame