Подтвердить что ты не робот

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

Например, у меня есть:

In [1]: df = pd.DataFrame([8, 9],
                          index=pd.MultiIndex.from_tuples([(1, 1, 1),
                                                           (1, 3, 2)]),
                          columns=['A'])

In [2] df
Out[2]: 
       A
1 1 1  8
  3 2  9

Есть ли лучший способ удалить последний уровень из индекса, чем это:

In [3]: pd.DataFrame(df.values,
                     index=df.index.droplevel(2),
                     columns=df.columns)
Out[3]: 
     A
1 1  8
  3  9
4b9b3361

Ответ 1

df.reset_index(level=2, drop=True)
Out[29]: 
     A
1 1  8
  3  9

Ответ 2

Вам не нужно создавать новый экземпляр DataFrame! Вы можете изменить индекс:

df.index = df.index.droplevel(2)
df

     A
1 1  8
  3  9

Вы также можете указать отрицательные индексы для выбора с конца:

df.index = df.index.droplevel(-1)