Supongamos que tengo una trama de datos con columnas a
, b
y c
, quiero ordenar la trama de datos por la columna b
en orden ascendente, y por la columna c
en orden descendente, ¿cómo puedo hacer esto?
python
pandas
python-2.7
sorting
data-analysis
Rakesh Adhikesavan
fuente
fuente
Respuestas:
A partir de la versión 0.17.0, el
sort
método fue desaprobado a favor desort_values
.sort
se eliminó por completo en la versión 0.20.0. Los argumentos (y resultados) siguen siendo los mismos:Puede usar el argumento ascendente de
sort
:Por ejemplo:
Como comentó @renadeen
es decir, si desea reutilizar df1 como un DataFrame ordenado:
o
fuente
sort
método a una variable o agregarinplace=True
a la llamada al método.A partir de pandas 0.17.0,
DataFrame.sort()
está en desuso y está configurado para eliminarse en una versión futura de pandas. La forma de ordenar un marco de datos por sus valores ahora esDataFrame.sort_values
Como tal, la respuesta a su pregunta ahora sería
fuente
Para grandes marcos de datos numéricos, puede ver una mejora significativa en el rendimiento a través de
numpy.lexsort
, que realiza una ordenación indirecta utilizando una secuencia de teclas:Una peculiaridad es que
numpy.lexsort
se invierte el orden de clasificación definido : primero se(-'b', 'a')
ordena por seriea
. Negamos las seriesb
para reflejar que queremos esta serie en orden descendente.Tenga en cuenta que
np.lexsort
solo se ordena con valores numéricos, mientras quepd.DataFrame.sort_values
funciona con cadenas o valores numéricos. El usonp.lexsort
con cuerdas dará:TypeError: bad operand type for unary -: 'str'
.fuente