Метод from_product
Метод from_product класса MultiIndex
позволяет создать мультииндекс из декартова произведения
нескольких итерируемых объектов. Первым параметром
передаётся список итерируемых объектов, из которых
будет построено произведение. Вторым параметром
можно задать имена уровней. Метод возвращает
объект MultiIndex.
Синтаксис
pd.MultiIndex.from_product(iterables, names=None)
Пример
Давайте создадим мультииндекс из двух списков:
import pandas as pd
iter1 = ['a', 'b']
iter2 = [1, 2]
multi = pd.MultiIndex.from_product([iter1, iter2])
print(multi)
Результат выполнения кода:
MultiIndex([('a', 1),
('a', 2),
('b', 1),
('b', 2)],
)
Пример
Теперь создадим мультииндекс с именами уровней:
import pandas as pd
iter1 = ['x', 'y']
iter2 = [10, 20, 30]
multi = pd.MultiIndex.from_product([iter1, iter2], names=['letter', 'number'])
print(multi)
Результат выполнения кода:
MultiIndex([('x', 10),
('x', 20),
('x', 30),
('y', 10),
('y', 20),
('y', 30)],
names=['letter', 'number'])
Пример
Используем созданный мультииндекс для построения таблицы:
import pandas as pd
iter1 = ['p', 'q']
iter2 = [5, 6]
multi = pd.MultiIndex.from_product([iter1, iter2], names=['first', 'second'])
df = pd.DataFrame({'a': [1, 2, 3, 4]}, index=multi)
print(df)
Результат выполнения кода:
a
first second
p 5 1
6 2
q 5 3
6 4
Пример
Создадим мультииндекс из трёх итерируемых объектов:
import pandas as pd
iter1 = [1, 2]
iter2 = ['a', 'b']
iter3 = [True, False]
multi = pd.MultiIndex.from_product([iter1, iter2, iter3], names=['num', 'char', 'bool'])
print(multi)
Результат выполнения кода:
MultiIndex([(1, 'a', True),
(1, 'a', False),
(1, 'b', True),
(1, 'b', False),
(2, 'a', True),
(2, 'a', False),
(2, 'b', True),
(2, 'b', False)],
names=['num', 'char', 'bool'])
Смотрите также
-
класс
MultiIndex,
который представляет собой мультииндекс -
метод
from_tuples,
который создаёт мультииндекс из кортежей -
метод
from_arrays,
который создаёт мультииндекс из массивов -
метод
to_frame,
который преобразует мультииндекс в таблицу