Размещение указанных c данных в многоиндексном фрейме данных - PullRequest
2 голосов
/ 01 мая 2020

Итак, я создал фрейм данных, используя этот код ...

robotdata = np.array([ [ 0.26 , 0.92 , 0.05 , 0.43 ] ,
                       [ 1.00 , 0.62 , 1.00 , 1.00 ] , 
                       [ 1.00 , 0.97 , 0.04 , 1.00 ] ,
                       [ 0.00 , 1.00 , 1.00 , 0.88 ] ,
                       [ 1.00 , 1.00 , 1.00 , 0.79 ] ,
                       [ 0.98 , 1.00 , 0.79 , 0.99 ] ,
                       [ 0.99 , 1.00 , 1.00 , 1.00 ] ,
                       [ 0.18 , 1.00 , 0.26 , 1.00 ] ,
                       [ 0.22 , 0.00 , 0.34 , 0.82 ] ])

robotrowIndx = pd.MultiIndex.from_product ([[ 'Slurm' , 'Zoidberg' , 'Wernstrom' ] , 
                                              [ 'A' , 'B' , 'C' ]] , 
                                             names =[ 'Laboratory' , 'Device' ])

robotcolIndex = pd.MultiIndex.from_product ([[ 'Replicant 1' , 'Replicant 2' ] , 
                                             [ 'Silicon' , 'Carbon' ]] , 
                                            names = [ 'Replicant' , 'Element' ])

robot = pd.DataFrame ( data = robotdata , index = robotrowIndx , columns = robotcolIndex )

robot

Теперь мне нужно создать новый объект 'R1 CC', который соответствует результатам устройства C, используя Carbon для Replicant 1.

Я пробовал что-то подобное, но безуспешно ...

R1CC = robot.loc ['C' , ('Carbon' & 'Replicant 1')]

1 Ответ

3 голосов
/ 01 мая 2020

Вы можете использовать pd.IndexSlice:

indx = pd.IndexSlice
r1cc = robot.loc[indx[:,'C'], indx['Replicant 1','Carbon']]

Выход:

Laboratory  Device
Slurm       C         0.97
Zoidberg    C         1.00
Wernstrom   C         0.00
Name: (Replicant 1, Carbon), dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...