Ich versuche, die Werte einer Pivot-Tabelle in absteigender Reihenfolge nach dem Platzieren von zwei "Zeilenbeschriftungen" (Excel-Ausdruck) auf dem Pivot zu sortieren.Sortieren Pivot-Tabelle (Multi-Index)
Beispieldaten:
x = pd.DataFrame({'col1':['a','a','b','c','c', 'a','b','c', 'a','b','c'],
'col2':[ 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3],
'col3':[ 1,.67,0.5, 2,.65, .75,2.25,2.5, .5, 2,2.75]})
print(x)
col1 col2 col3
0 a 1 1.00
1 a 1 0.67
2 b 1 0.50
3 c 1 2.00
4 c 1 0.65
5 a 2 0.75
6 b 2 2.25
7 c 2 2.50
8 a 3 0.50
9 b 3 2.00
10 c 3 2.75
die Pivot zu erstellen, ich die folgende Funktion bin mit:
pt = pd.pivot_table(x, index = ['col1', 'col2'], values = 'col3', aggfunc = np.sum)
print(pt)
col3
col1 col2
a 1 1.67
2 0.75
3 0.50
b 1 0.50
2 2.25
3 2.00
c 1 2.65
2 2.50
3 2.75
In Worten, diese Variable pt
zuerst von col1
sortiert, dann durch die Werte von col2
innerhalb von col1
dann von col3
innerhalb all dieser. Das ist großartig, aber ich würde gerne nach col3
sortieren (die Werte), während die Gruppen behalten werden, die in col2
ausgebrochen sind (diese Spalte kann irgendeine Reihenfolge sein und gemischt werden).
würde Ziel Ausgang wie folgt aussehen (col3
um mit einer beliebigen Reihenfolge in col2
mit dieser Gruppe von col1
in absteigender Reihenfolge):
col3
col1 col2
a 1 1.67
2 0.75
3 0.50
b 2 2.25
3 2.00
1 0.50
c 3 2.75
1 2.65
2 2.50
habe ich versucht, den Code unten, aber diese sortiert nur den gesamten Dreh Tabellenwerte und verliert die Gruppierung (ich suche nach der Sortierung innerhalb der Gruppe).
pt.sort_values(by = 'col3', ascending = False)
Zur Orientierung wurde eine ähnliche Frage gestellt (und beantwortete) hier, aber ich war nicht in der Lage einen erfolgreichen Ausgang mit der mitgelieferten Ausgabe zu erhalten:
Der Fehler, den ich von dem bekommen Antwort ValueError: all keys need to be the same shape