python - seleccionar - recorrer data frame pandas
¿Cómo ordenar un DataFrame en python pandas por dos o más columnas? (2)
A partir de pandas 0.17.0, DataFrame.sort()
está en desuso y configurado para eliminarse en una versión futura de pandas. La forma de ordenar un dataframe por sus valores ahora es DataFrame.sort_values
Como tal, la respuesta a su pregunta sería ahora
df.sort_values([''b'', ''c''], ascending=[True, False], inplace=True)
Supongamos que tengo un Data-Frame con columnas ab & c, quiero ordenar el data-Frame por la columna b en ascendente, y por la columna c en descendente, ¿cómo hago esto?
A partir de la versión 0.17.0, el método de sort
quedó en desuso en favor de sort_values
. sort
fue eliminado por completo en la versión 0.20.0. Los argumentos (y resultados) siguen siendo los mismos:
df.sort_values([''a'', ''b''], ascending=[True, False])
Puede usar el argumento de sort
ascendente:
df.sort([''a'', ''b''], ascending=[True, False])
Por ejemplo:
In [11]: df1 = pd.DataFrame(np.random.randint(1, 5, (10,2)), columns=[''a'',''b''])
In [12]: df1.sort([''a'', ''b''], ascending=[True, False])
Out[12]:
a b
2 1 4
7 1 3
1 1 2
3 1 2
4 3 2
6 4 4
0 4 3
9 4 3
5 4 1
8 4 1
Como lo comentó @renadeen
¡Sort no está en su lugar por defecto! Por lo tanto, debe asignar el resultado del método de clasificación a una variable o agregar inplace = Verdadero a la llamada al método.
es decir, si desea reutilizar df1 como un DataFrame ordenado:
df1 = df1.sort([''a'', ''b''], ascending=[True, False])
o
df1.sort([''a'', ''b''], ascending=[True, False], inplace=True)