2017-10-19 6 views
0

J'ai un dataframe multiindice de (fait avec pivot_table) qui ressemble àitérer sur Pandas lignes de dataframe

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

Lorsque les 2 premières colonnes sont un index. Je voudrais itérer sur chaque ligne et obtenir le sous-à-dire la table pour « 1 article »

col1 col2 col3 
a 0 0 0 
b 1 1 1 

et peut-être diviser à nouveau en

col1 col2 col3 
a 0 0 0 

Ces valeurs sont à l'origine se transforment en cartes dans un GUI

J'ai essayé différentes combinaisons d'index changeants, iterrows, xs, mais je semble toujours pouvoir seulement obtenir des choses en utilisant (index1, index2) comme (item 1, a, 0,0,0) où Je voudrais les séparer comme (item 1, {a: [0,0,0], b: [0,0,0]})

Répondre

2

Utilisez

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 

Un niveau plus

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