Как сгладить MultiIndex в Pandas (с примерами)


Вы можете использовать следующий базовый синтаксис для выравнивания MultiIndex в pandas:

#flatten all levels of MultiIndex
df.reset_index(inplace= True )

#flatten specific levels of MultiIndex
df.reset_index(inplace= True , level = ['level_name'])

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1. Сведение всех уровней MultiIndex в Pandas

Предположим, у нас есть следующий DataFrame MultiIndex pandas:

import pandas as pd

#create DataFrame
index_names = pd.MultiIndex.from_tuples([('Level1','Lev1', 'L1'),
('Level2','Lev2', 'L2'),
('Level3','Lev3', 'L3'),
('Level4','Lev4', 'L4')],
 names=['Full','Partial', 'ID'])

data = {'Store': ['A','B','C','D'],
 'Sales': [12, 44, 29, 35]}

df = pd.DataFrame(data, columns = ['Store',' Sales'], index=index_names)

#view DataFrame
df

 Store Sales
Full Partial ID 
Level1 Lev1 L1 A 17
Level2 Lev2 L2 B 22
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35

Мы можем использовать следующий синтаксис, чтобы объединить каждый уровень MultiIndex в столбцы в DataFrame:

#flatten every level of MultiIndex 
df.reset_index(inplace= True )

#view updated DataFrame
df

 Full Partial ID Store Sales
0 Level1 Lev1 L1 A 12
1 Level2 Lev2 L2 B 44
2 Level3 Lev3 L3 C 29
3 Level4 Lev4 L4 D 35

Обратите внимание, что каждый уровень MultiIndex теперь является столбцом в DataFrame.

Пример 2: выравнивание определенных уровней MultiIndex в Pandas

Предположим, у нас есть тот же DataFrame pandas, что и в предыдущем примере:

#view DataFrame
df

 Store Sales
Full Partial ID 
Level1 Lev1 L1 A 12
Level2 Lev2 L2 B 44
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35

В следующем коде показано, как сгладить только один конкретный уровень MultiIndex:

#flatten 'ID' level only
df.reset_index(inplace= True , level = ['ID'])

#view updated DataFrame
df

 ID Store Sales
Full Partial 
Level1 Lev1 L1 A 12
Level2 Lev2 L2 B 44
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35

А следующий код показывает, как сгладить несколько определенных уровней MultiIndex:

#flatten 'ID' level only
df.reset_index(inplace= True , level = ['Partial', 'ID'])

#view updated DataFrame
df

 Partial ID Store Sales
Full 
Level1 Lev1 L1 A 12
Level2 Lev2 L2 B 44
Level3 Lev3 L3 C 29
Level4 Lev4 L4 D 35

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные функции в pandas:

Как преобразовать индекс в столбец в Pandas
Как переименовать индекс в Pandas
Как установить столбец в качестве индекса в Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.