Angesichts der folgenden Pivot-Tabelle:Pandas Alle ersetzen Aber Mittelwerte pro Kategorie einer Stufe mit Blank
df=pd.DataFrame({'A':['a','a','a','a','a','b','b','b','b'],
'B':['x','y','z','x','y','z','x','y','z'],
'C':['a','b','a','b','a','b','a','b','a'],
'D':[7,5,3,4,1,6,5,3,1]})
table = pd.pivot_table(df, index=['A', 'B','C'],aggfunc='sum')
table
D
A B C
a x a 7
b 4
y a 1
b 5
z a 3
b x a 5
y b 3
z a 1
b 6
Ich weiß, dass ich die Werte eines jeden Levels like so zugreifen:
In [128]:
table.index.get_level_values('B')
Out[128]:
Index(['x', 'x', 'y', 'y', 'z', 'x', 'y', 'z', 'z'], dtype='object', name='B')
In [129]:
table.index.get_level_values('A')
Out[129]:
Index(['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'], dtype='object', name='A')
Weiter Ich möchte alle Werte in jeder der äußeren Ebenen durch Leerzeichen ('') ersetzen, die für die mittleren oder n/2 + 1 Werte gespeichert sind.
Damit:
Index(['x', 'x', 'y', 'y', 'z', 'x', 'y', 'z', 'z'], dtype='object', name='B')
wird:
Index(['x', '', 'y', '', 'z', 'x', 'y', 'z', ''], dtype='object', name='B')
und
Index(['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'], dtype='object', name='A')
wird:
Index(['', '', 'a', '', '', '', 'b', '', ''], dtype='object', name='A')
Letztlich werde ich versuchen, diese als sekundäre und tertiäre y-Achse Etiketten zu verwenden, in einer Matplotlib Reck, etwas Diagramm wie dieses (obwohl einige meiner Etiketten nach oben verschoben werden kann):