2017-07-10 1 views
2

J'ai un dataframe de pandas géants de multiindice qui ressemble à ceciRemodeler un pandas géants multiindice dataframe

ID   I     II     III 
METRIC  a b c d a b c d a b c d 
2015-08-01 0 1 2 3 20 21 22 23 40 41 42 43 
2015-08-02 4 5 6 7 24 25 26 27 44 45 46 47 
2015-08-03 8 9 10 11 28 29 30 31 48 49 50 51 

où il est indexé par les dates (2015-08-01, 2015-08-02, 2015-08-03, etc.), les colonnes de premier niveau (III, III) sont ID s et les colonnes de second niveau correspondent METRIC s (a, b, c, d). Je voudrais remodeler à la suite

METRIC    a b c d 
ID 
I  2015-08-01 0 1 2 3 
     2015-08-02 4 5 6 7 
     2015-08-03 8 9 10 11 
II  2015-08-01 20 21 22 23 
     2015-08-02 24 25 26 27 
     2015-08-03 28 29 30 31 
III 2015-08-01 40 41 42 43 
     2015-08-02 44 45 46 47 
     2015-08-03 48 49 50 51 

Je (sans succès) examiné à l'aide .pivot, .stack et .melt, mais ils ne me donnent pas ce que je cherche. Je boucle actuellement sur ID s et construis une liste de dataframes et concat ensemble comme une nouvelle base de données pour obtenir ce que je veux.

Toutes les suggestions seraient grandement appréciées.

Répondre

4

Utilisons stack, swaplevel et sort_index:

df.stack(0).swaplevel(0,1).sort_index() 

Sortie:

METRIC   a b c d 
ID        
I 2015-08-01 0 1 2 3 
    2015-08-02 4 5 6 7 
    2015-08-03 8 9 10 11 
II 2015-08-01 20 21 22 23 
    2015-08-02 24 25 26 27 
    2015-08-03 28 29 30 31 
III 2015-08-01 40 41 42 43 
    2015-08-02 44 45 46 47 
    2015-08-03 48 49 50 51 
+0

Simple et clair !! – Wen

+0

@Wen oui c'est :-) – piRSquared

+0

@piRSquared le vôtre aussi !!! apprenez beaucoup !! upvote – Wen

3

Vous pouvez laisser transpose ou T faire une partie du travail pour vous.

df.T.stack().unstack(1) 

METRIC   a b c d 
ID        
I 2015-08-01 0 1 2 3 
    2015-08-02 4 5 6 7 
    2015-08-03 8 9 10 11 
II 2015-08-01 20 21 22 23 
    2015-08-02 24 25 26 27 
    2015-08-03 28 29 30 31 
III 2015-08-01 40 41 42 43 
    2015-08-02 44 45 46 47 
    2015-08-03 48 49 50 51 
+0

Oooh .. J'aime utiliser T ici! Nice, M. PiRSquared! +1 –

+0

! Upvote pour la magie 'T' – Wen

+0

C'est un peu comme la matrice ....." ... ce n'est pas la cuillère qui se plie, c'est seulement vous-même. " –