Метод from_frame
Классовый метод from_frame применяется к MultiIndex
и создаёт иерархический индекс из переданного DataFrame.
Каждый столбец таблицы становится уровнем индекса.
Первым и единственным обязательным параметром является DataFrame.
Дополнительно можно указать параметр sortorder для сортировки уровней.
Синтаксис
pd.MultiIndex.from_frame(df, sortorder=None)
Пример
Давайте создадим иерархический индекс из простого DataFrame:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3],
'b': [10, 20, 30]
})
mindex = pd.MultiIndex.from_frame(df)
print(mindex)
Результат выполнения кода:
MultiIndex([(1, 10),
(2, 20),
(3, 30)],
names=['a', 'b'])
Пример
Теперь создадим MultiIndex с тремя уровнями:
import pandas as pd
df = pd.DataFrame({
'level_1': [1, 1, 2, 2],
'level_2': ['x', 'y', 'x', 'y'],
'level_3': [10, 20, 30, 40]
})
mindex = pd.MultiIndex.from_frame(df)
print(mindex)
Результат выполнения кода:
MultiIndex([(1, 'x', 10),
(1, 'y', 20),
(2, 'x', 30),
(2, 'y', 40)],
names=['level_1', 'level_2', 'level_3'])
Пример
Используем параметр sortorder для сортировки уровней:
import pandas as pd
df = pd.DataFrame({
'a': [3, 1, 2],
'b': [30, 10, 20]
})
mindex = pd.MultiIndex.from_frame(df, sortorder=0)
print(mindex)
Результат выполнения кода:
MultiIndex([(1, 10),
(2, 20),
(3, 30)],
names=['a', 'b'])
Пример
Используем созданный MultiIndex для индексации DataFrame:
import pandas as pd
df_index = pd.DataFrame({
'a': [1, 2, 3],
'b': [10, 20, 30]
})
mindex = pd.MultiIndex.from_frame(df_index)
data = pd.DataFrame({
'value': [100, 200, 300]
}, index=mindex)
print(data)
Результат выполнения кода:
value
a b
1 10 100
2 20 200
3 30 300
Смотрите также
-
класс
MultiIndex,
который представляет иерархический индекс -
метод
from_tuples,
который создаёт MultiIndex из списка кортежей -
метод
from_arrays,
который создаёт MultiIndex из списка массивов -
метод
to_frame,
который преобразует MultiIndex обратно в DataFrame