Как получить доступ к определенным строкам в многоиндексном фрейме данных pandas

#python #python-3.x #pandas #dataframe

#python #python-3.x #pandas #фрейм данных

Вопрос:

Я работаю с тем, что, по моему мнению, является многоиндексным фреймом данных pandas. Есть ли какой-нибудь способ убедиться? Мои данные выглядят следующим образом.

             cinc           Outcome   
Side           1         2       1  2
WarNum                               
1       0.146344  0.029989       1  2
4       0.152565  0.056853       1  2
7       0.082757  0.017940       1  2
10      0.076032  0.022553       1  2
13      0.048538  0.005754       1  2
 

Когда я набираю war_cinc.columns. Я получаю следующий вывод.

 MultiIndex([(   'cinc', 1),
            (   'cinc', 2),
            ('Outcome', 1),
            ('Outcome', 2)],
           names=[None, 'Side'])
 

Если бы я хотел подмножество этих данных, как бы я это сделал? (скажем, я хочу получить весь 2-й столбец столбца cinc фрейма данных)

Ответ №1:

Чтобы проверить , есть ли у вашего df Multiindex , вы можете сделать это:

 isinstance(war_cinc.index, pd.MultiIndex)
 

Это вернется True .

Чтобы проверить наличие hierarchical столбцов, вы можете проверить nlevels :

 if len(war_cinc.columns.nlevels) > 1:
 

Это будет True в вашем случае.

Вы можете получить весь 2-й столбец следующим образом:

 war_cinc[(   'cinc', 2)]
 

Вам нужно передать весь levels столбец в a tuple , чтобы получить значения столбца.