Иерархический индекс панд из строки - PullRequest
3 голосов
/ 17 мая 2019

Я считаю, что это должно быть тривиальной проблемой, однако я не могу найти решение.

Предположим, у вас есть следующее DF

pd.DataFrame({'Math_0':[1,2,6,'math'],'Math_1':[8,3,7,'math'],'science_0':[9,5,2,'science']},
             index=['Jeff','Bob','Cal','Category'])
df
>>>
        M0      M1      S1
Jeff    1       8       9
Bob     2       3       5
Cal     6       7       2
Subj    math    math    science

Я хочу сгруппировать по индексустрока 'Subj' для создания иерархического индекса
В свою очередь результирующий фрейм данных будет выглядеть как

df
>>>
      Subj      question    score
Jeff  math      m0          1
                m1          8
      science   s0          9

Bob   math      m0          2
                m1          3
      science   s0          5

Cal   math      m0          6
                m1          7
      science   s0          2


1 Ответ

3 голосов
/ 17 мая 2019

IIUC после T до melt

yourdf=df.T.reset_index().melt(['Subj','index']).set_index(['variable','Subj']).\
          rename(columns={'index':'question','value':'score'})

yourdf
Out[19]: 
                 question score
variable Subj                  
Jeff     math          M0     1
         math          M1     8
         science       S1     9
Bob      math          M0     2
         math          M1     3
         science       S1     5
Cal      math          M0     6
         math          M1     7
         science       S1     2
...