Unmelt Pandas DataFrame

Habe ich ein pandas dataframe mit zwei id-Variablen:

df = pd.DataFrame({'id': [1,1,1,2,2,3], 
               'num': [10,10,12,13,14,15],
               'q': ['a', 'b', 'd', 'a', 'b', 'z'],
               'v': [2,4,6,8,10,12]})

   id  num  q   v
0   1   10  a   2
1   1   10  b   4
2   1   12  d   6
3   2   13  a   8
4   2   14  b  10
5   3   15  z  12

Kann ich die pivot-Tabelle mit:

df.pivot('id','q','v')

Und am Ende mit etwas in der Nähe von:

q    a   b   d   z
id                
1    2   4   6 NaN
2    8  10 NaN NaN
3  NaN NaN NaN  12

Jedoch, was ich wirklich will ist (das original unmelted form):

id   num   a   b   d   z               
1    10   2   4 NaN NaN
1    12 NaN NaN   6 NaN  
2    13   8 NaN NaN NaN
2    14 NaN  10 NaN NaN
3    15 NaN NaN NaN  12

In anderen Worten:

  1. 'id' und 'num' meine Indizes (normalerweise habe ich nur gesehen, entweder 'id' oder 'num' als der index, aber ich brauche beide, da bin ich beim abrufen der ursprünglichen unmelted form)
  2. 'q' sind meine Spalten
  3. 'v' sind meine Werte in der Tabelle

Update

Fand ich eine schließen Lösung von Wes McKinney ' s blog:

df.pivot_table(index=['id','num'], columns='q')

         v            
q        a   b   d   z
id num                
1  10    2   4 NaN NaN
   12  NaN NaN   6 NaN
2  13    8 NaN NaN NaN
   14  NaN  10 NaN NaN
3  15  NaN NaN NaN  12

Jedoch, das format ist nicht ganz das gleiche wie das, was ich oben soll.

InformationsquelleAutor slaw | 2015-07-09
Schreibe einen Kommentar