¿Cómo ordenar el marco de datos de pandas usando valores de varias columnas?
Tengo el siguiente marco de datos:
df = pandas.DataFrame([{'c1':3,'c2':10},{'c1':2, 'c2':30},{'c1':1,'c2':20},{'c1':2,'c2':15},{'c1':2,'c2':100}])
O, en forma legible para humanos:
c1 c2
0 3 10
1 2 30
2 1 20
3 2 15
4 2 100
El siguiente comando de clasificación funciona como se espera:
df.sort(['c1','c2'], ascending=False)
Salida:
c1 c2
0 3 10
4 2 100
1 2 30
3 2 15
2 1 20
Pero el siguiente comando:
df.sort(['c1','c2'], ascending=[False,True])
resultados en
c1 c2
2 1 20
3 2 15
1 2 30
4 2 100
0 3 10
Y esto no es lo que espero. Espero tener los valores en la primera columna ordenados de mayor a menor, y si hay valores idénticos en la primera columna, ordenados por los valores ascendentes de la segunda columna.
¿Alguien sabe por qué no funciona como se esperaba?
ADICIONAL
Esto es copiar y pegar:
>>> df.sort(['c1','c2'], ascending=[False,True])
c1 c2
2 1 20
3 2 15
1 2 30
4 2 100
0 3 10