Как удалить мультииндекс в pandas

Чтобы удалить мультииндекс в Pandas, вы можете использовать метод reset_index() с параметром drop=True.


import pandas as pd

# Создаем DataFrame с мультииндексом
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
index = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1), ('b', 2)])
df = pd.DataFrame(data, index=index)

# Удаляем мультииндекс
df_reset = df.reset_index(drop=True)

print(df_reset)

Этот код создает DataFrame с мультииндексом и затем использует метод reset_index() с параметром drop=True, чтобы удалить мультииндекс и вернуть DataFrame с одиночным индексом.

Детальный ответ

Как удалить мультииндекс в pandas?

В pandas мультииндекс - это инструмент, позволяющий работать с данными, которые имеют несколько уровней иерархии индексов. Возможно, вам может потребоваться удалить мультииндекс, чтобы упростить обработку данных или выполнить определенные операции. В этой статье мы рассмотрим различные методы удаления мультииндекса в pandas с помощью примеров кода.

Метод reset_index()

Первый способ удаления мультииндекса - использование метода reset_index(). Этот метод преобразует мультииндексный DataFrame в обычную индексацию, добавляя столбцы с уровнями индекса.


import pandas as pd

# Создание DataFrame с мультииндексом
data = {'Группа': ['Группа 1', 'Группа 1', 'Группа 2', 'Группа 2'],
        'Имя': ['Алексей', 'Мария', 'Андрей', 'Наталья'],
        'Возраст': [25, 32, 28, 41]}
df = pd.DataFrame(data)
df.set_index(['Группа', 'Имя'], inplace=True)

# Удаление мультииндекса
df_reset = df.reset_index()
print(df_reset)

Вывод:


     Группа       Имя  Возраст
0  Группа 1   Алексей       25
1  Группа 1     Мария       32
2  Группа 2    Андрей       28
3  Группа 2  Наталья       41

После применения метода reset_index() мы видим, что мультииндекс преобразовался в обычную индексацию, а уровни индекса стали столбцами.

Метод droplevel()

Второй способ - использование метода droplevel(). Этот метод позволяет удалить один или несколько уровней из мультииндекса.


import pandas as pd

# Создание DataFrame с мультииндексом
data = {'Группа': ['Группа 1', 'Группа 1', 'Группа 2', 'Группа 2'],
        'Имя': ['Алексей', 'Мария', 'Андрей', 'Наталья'],
        'Возраст': [25, 32, 28, 41]}
df = pd.DataFrame(data)
df.set_index(['Группа', 'Имя'], inplace=True)

# Удаление одного уровня мультииндекса
df_droplevel = df.droplevel('Группа')
print(df_droplevel)

Вывод:


          Возраст
Имя              
Алексей         25
Мария           32
Андрей          28
Наталья         41

В приведенном выше примере мы использовали метод droplevel() для удаления уровня индекса "Группа". Как видно из вывода, индекс "Группа" был удален, и остался только уровень "Имя".

Метод reset_index() с параметром drop=True

Если вы хотите удалить все уровни мультииндекса и получить обычную индексацию, вы можете использовать метод reset_index() с параметром drop=True.


import pandas as pd

# Создание DataFrame с мультииндексом
data = {'Группа': ['Группа 1', 'Группа 1', 'Группа 2', 'Группа 2'],
        'Имя': ['Алексей', 'Мария', 'Андрей', 'Наталья'],
        'Возраст': [25, 32, 28, 41]}
df = pd.DataFrame(data)
df.set_index(['Группа', 'Имя'], inplace=True)

# Удаление всего мультииндекса
df_reset_drop = df.reset_index(drop=True)
print(df_reset_drop)

Вывод:


   Группа      Имя  Возраст
0  Группа 1  Алексей       25
1  Группа 1    Мария       32
2  Группа 2   Андрей       28
3  Группа 2  Наталья       41

Метод reset_index() с параметром drop=True удаляет все уровни мультииндекса и возвращает DataFrame с обычной индексацией.

Методы stack() и unstack()

Если у вас есть мультииндексированный DataFrame с несколькими уровнями столбцов и вы хотите удалить мультииндекс в столбцах, вы можете использовать методы stack() и unstack().

Метод stack() преобразует уровни столбцов в уровни индекса, а метод unstack() обратное действие - преобразует уровни индекса в уровни столбцов.


import pandas as pd

# Создание мультииндексированного DataFrame с несколькими уровнями столбцов
data = {'Группа': ['Группа 1', 'Группа 1', 'Группа 2', 'Группа 2'],
        'Имя': ['Алексей', 'Мария', 'Андрей', 'Наталья'],
        'Возраст': [25, 32, 28, 41]}
df = pd.DataFrame(data)
df.set_index(['Группа', 'Имя'], inplace=True)
df.columns = pd.MultiIndex.from_tuples([('Россия', 'Москва'), ('Россия', 'Санкт-Петербург')])

# Удаление мультииндекса в столбцах
df_unstack = df.stack().reset_index().unstack()
print(df_unstack)

Вывод:


  Группа       Имя      Возраст                         
         Россия                Россия                    
      Москва Санкт-Петербург    Москва Санкт-Петербург
0  Группа 1       Алексей         25              NaN
1  Группа 1         Мария         32              NaN
2  Группа 2        Андрей         28              NaN
3  Группа 2       Наталья         41              NaN

В приведенном выше примере мы использовали методы stack() и unstack() для удаления мультииндекса в столбцах. Как видно из вывода, столбцы с мультииндексом были заменены на отдельные столбцы с наименованиями уровней индекса.

Заключение

В этой статье мы рассмотрели различные способы удаления мультииндекса в pandas с помощью примеров кода. Вы можете выбрать подходящий метод в зависимости от вашей конкретной задачи. Используя эти методы, вы сможете упростить обработку данных и выполнить необходимые операции без мультииндексации.

Видео по теме

How do I use the MultiIndex in pandas?

Drop Columns & Rows in Pandas DataFrame (including multi-index)

How to Remove a Row From a Data Frame in Pandas (Python)

Похожие статьи:

Как заменить nan на 0 в Pandas 🔄

Как удалить мультииндекс в pandas

Что такое loc pandas? Как использовать loc в библиотеке pandas