Pandas: Ordenar tabla dinámica

Solo estoy probando pandas por primera vez, y estoy tratando de ordenar una tabla dinámica primero por un índice, luego por los valores de una serie.

Hasta ahora he intentado:

table = pivot_table(sheet1, values='Value', rows=['A','B'], aggfunc=np.sum) # Sorts by value ascending, can't change to descending table.copy().sort() table # The following gives me the correct ordering in values, but ignores index sorted_table = table.order(ascending=False) sorted_table # The following brings me back to the original ordering sorted_table = table.order(ascending=False) sorted_table2 = sorted_table.sortlevel(0) sorted_table2 

¿Cuál es la forma correcta de ordenar una tabla dinámica por índice y luego por valor?

Aquí hay una solución que puede hacer lo que quieras:

 key1 = table.index.labels[0] key2 = table.rank(ascending=False) # sort by key1, then key2 sorter = np.lexsort((key2, key1)) sorted_table = table.take(sorter) 

El resultado se vería así:

 In [22]: table Out[22]: AB bar one 0.698202 three 0.801326 two -0.205257 foo one -0.963747 three 0.120621 two 0.189623 Name: C In [23]: table.take(sorter) Out[23]: AB bar three 0.801326 one 0.698202 two -0.205257 foo two 0.189623 three 0.120621 one -0.963747 Name: C 

Esto sería bueno construir en pandas como un método API. Aunque no estoy seguro de cómo debería ser.