2017-10-19 3 views
0

Ich habe einen Multiindex Datenrahmen aus (mit pivot_table gemacht), die wieIterate über Pandas Datenrahmen Reihen

  col1 col2 col3 
item 1 a 0 0 0 
     b 1 1 1 
item 2 a 0 0 0 
     c 1 2 3 

sieht Wo die ersten 2 Spalten ein Index sind. Ich möchte über jede Zeile wiederholen und die Untertabelle dh für ‚Artikel 1‘

col1 col2 col3 
a 0 0 0 
b 1 1 1 

und möglicherweise erhalten teilen wieder in

col1 col2 col3 
a 0 0 0 

Diese Werte sind ursprünglich in Karten in ein transformiertes bekommen GUI

Ich habe verschiedene Kombinationen von wechselnden Indizes, iterrows, xs ausprobiert, aber ich scheine immer nur in der Lage zu sein, Dinge mit (index1, index2) wie (item 1, a, 0,0,0) zu bekommen Ich möchte sie auseinander teilen wie (Punkt 1, {a: [0,0,0], b: [0,0,0]})

Antwort

2

Verwenden

In [4482]: for i, g in df.groupby(level=0): 
     ...:  print g.loc[i] 
     ...: 
    col1 col2 col3 
a  0  0  0 
b  1  1  1 
    col1 col2 col3 
a  0  0  0 
c  1  2  3 

Noch eine Ebene

In [4488]: for i, g in df.groupby(level=0): 
     ...:  print '--------Parent--------', i 
     ...:  print g.loc[i] 
     ...:  for ii, gg in g.loc[i].groupby(level=0): 
     ...:   print '----------child--------', ii 
     ...:   print gg 
     ...: 
--------Parent-------- item 1 
    col1 col2 col3 
a  0  0  0 
b  1  1  1 
----------child-------- a 
    col1 col2 col3 
a  0  0  0 
----------child-------- b 
    col1 col2 col3 
b  1  1  1 
--------Parent-------- item 2 
    col1 col2 col3 
a  0  0  0 
c  1  2  3 
----------child-------- a 
    col1 col2 col3 
a  0  0  0 
----------child-------- c 
    col1 col2 col3 
c  1  2  3