Ich habe folgende Pivot-Tabelle, die ein Multi-Index ist, sowohl für die Indizes und die Spalte:Python Pandas Pivot-Tabelle - Hinzufügen von berechneten Spalt zu Multi-Index-Spalte
Category HF DA
tafp tap tw tafp tap tafp
ATTR EL
attr1 1.0 10 25 15 100 150 50
attr2 2.0 0 0 0 40 70 30
3.0 20 50 30 0 0 0
attr3 2.0 0 0 0 0 0 0
hier ein dict von diesem Pivot-Tabelle (Werte sind ein bisschen anders, aber das spielt keine Rolle):
{
('HF', 'tafp'): {('attr1', '1.0'): 10, ('attr2', '2.0'): 100, ('attr3','2.0'): 0, ('attr4', '2.0'): 0, ('attr2', '3.0'): 71},
('HF', 'tap'): {('attr1', '1.0'): 30, ('attr2', '2.0'): 350, ('attr3', '2.0'): 0, ('attr4', '2.0'): 0, ('attr2', '3.0'): 1042},
('HF', 'tw'): {('attr1', '1.0'): 20, ('attr2', '2.0'): 250, ('attr3', '2.0'): 0, ('attr4', '2.0'): 0, ('attr2', '3.0'): 971},
('DA', 'tafp'): {('attr1', '1.0'): 0, ('attr2', '2.0'): 435, ('attr3', '2.0'): 0, ('attr4', '2.0'): 0, ('attr2', '3.0'): 0},
('DA', 'tap'): {('attr1', '1.0'): 0, ('attr2', '2.0'): 635, ('attr3', '2.0'): 0, ('attr4', '2.0'): 0, ('attr2', '3.0'): 0},
('DA', 'tw'): {('attr1', '1.0'): 0, ('attr2', '2.0'): 200, ('attr3', '2.0'): 0, ('attr4', '2.0'): 0, ('attr2', '3.0'): 0}
}
Was ich am Ende bekommen wollen, ist die folgende:
Category HF DA
tafp/tap tw tafp/tap tafp
ATTR EL
attr1 1.0 0.67 15 0.67 50
attr2 2.0 0 0 0.57 30
3.0 0.67 30 0 0
attr3 2.0 0 0 0 0
Also würde ich gerne den Prozentsatz von tafp/tap bekommen und nur diese berechnete Spalte behalten, d. H. Die ursprünglichen Spalten löschen.
Hat jemand eine Idee, wie ich das erreichen kann?
Jede Hilfe wird sehr geschätzt :)
Thank you very much! Klappt wunderbar. Könnten Sie die Verwendung des Arguments "level" im Stack und im Stack erklären? Ich verstehe, was es bedeutet, aber warum verwenden Sie level = 2 beim Entstapeln? –
weil ('HF', 'DA') ist jetzt die dritte (Index 2) Spalte von Zeilen-Index, aber es ist der Standard, also entferne ich es. –