Supongamos que tengo una trama de datos con columnas a, by c, quiero ordenar la trama de datos por la columna ben orden ascendente, y por la columna cen 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
sortmétodo fue desaprobado a favor desort_values.sortse 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
sortmétodo a una variable o agregarinplace=Truea 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_valuesComo 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.lexsortse invierte el orden de clasificación definido : primero se(-'b', 'a')ordena por seriea. Negamos las seriesbpara reflejar que queremos esta serie en orden descendente.Tenga en cuenta que
np.lexsortsolo se ordena con valores numéricos, mientras quepd.DataFrame.sort_valuesfunciona con cadenas o valores numéricos. El usonp.lexsortcon cuerdas dará:TypeError: bad operand type for unary -: 'str'.fuente