РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
111 of 687 menu

Метод stack

Метод stack применяется к DataFrame и преобразует указанные столбцы в строки, добавляя новый уровень в индекс. По умолчанию метод сворачивает все столбцы, превращая таблицу в более длинный формат. Первый параметр level позволяет указать, какой уровень мультииндекса столбцов следует преобразовать. Если параметр не указан, сворачиваются все столбцы. Метод особенно полезен для работы с многомерными данными, когда нужно перейти от широкого формата к длинному. Результатом работы метода является Series или DataFrame с мультииндексом.

Синтаксис

df.stack([level], [dropna=True])

Параметры метода stack:

  • level - уровень мультииндекса столбцов для преобразования (по умолчанию все столбцы);
  • dropna - удалять ли строки с пропусками в результирующем объекте (по умолчанию True).

Пример

Давайте преобразуем столбцы таблицы в дополнительный уровень индекса:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3], 'b': [4, 5, 6] }) res = df.stack() print(res)

Результат выполнения кода:

0 a 1 b 4 1 a 2 b 5 2 a 3 b 6 dtype: int64

Пример

Давайте применим метод с параметром dropna для управления пропусками в данных:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, None], 'b': [4, None, 6] }) res = df.stack(dropna=False) print(res)

Результат выполнения кода:

0 a 1.0 b 4.0 1 a 2.0 b NaN 2 a NaN b 6.0 dtype: float64

Если установить dropna в False, в результате сохранятся строки с пропусками.

Пример

Давайте применим метод к таблице с мультииндексом в столбцах, указав уровень для преобразования:

import pandas as pd columns = pd.MultiIndex.from_tuples([ ('x', 'a'), ('x', 'b'), ('y', 'a'), ('y', 'b') ]) df = pd.DataFrame([[1, 2, 3, 4]], columns=columns) res = df.stack(level=0) print(res)

Результат выполнения кода:

x y 0 a 1 3 b 2 4

В результате первый уровень мультииндекса стал дополнительным индексом строк.

Пример

Давайте используем метод stack в связке с методом unstack для изменения структуры данных:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) stacked = df.stack() unstacked = stacked.unstack() print(unstacked)

Результат выполнения кода:

a b 0 1 10 1 2 20 2 3 30 3 4 40 4 5 50

Методы stack и unstack являются обратными друг другу для таблиц без пропусков.

Смотрите также

  • метод unstack,
    который выполняет обратное преобразование
  • метод melt,
    который также преобразует столбцы в строки
  • метод pivot,
    который изменяет структуру таблицы
  • метод pivot_table,
    который создает сводную таблицу с агрегацией
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить