pandas.DataFrame.melt
- DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)[source]
-
Преобразование DataFrame из широкой формы в длинную, при необходимости сохраняя идентификаторы.
Эта функция полезна для преобразования DataFrame в формат, где один или несколько столбцов являются идентификационными переменными (id_vars), а все остальные столбцы, рассматриваемые как измерительные переменные (value_vars), «разворачиваются» в строчный индекс, оставляя только два столбца, не являющихся идентификаторами, ‘variable’ и ‘value’.
- Параметры
-
- id_vars:кортеж, список или массив NumPy, необязательно
-
Столбец(ы) для использования в качестве идентификационных переменных.
- value_vars:кортеж, список или массив NumPy, необязательно
-
Столбец(ы) для разворота. Если не указаны, используются все столбцы, которые не установлены как id_vars.
- var_name:скаляр
-
Имя для столбца ‘variable’. Если None, используется
frame.columns.nameили ‘variable’. - value_name:скаляр, по умолчанию ‘value’
-
Имя для столбца ‘value’.
- col_level:целое число или строка, необязательно
-
Если столбцы являются многоуровневым индексом, используйте этот уровень для разворота.
- ignore_index:bool, по умолчанию True
-
Если True, исходный индекс игнорируется. Если False, исходный индекс сохраняется. Метки индекса будут повторяться по мере необходимости.
Добавлена в версии 1.1.0.
- Возвращает
-
- DataFrame
-
Преобразованный в длинную форму DataFrame.
См. также
melt-
Идентичный метод.
pivot_table-
Создать сводную таблицу в стиле электронных таблиц как DataFrame.
DataFrame.pivot-
Возвратить перестроенный DataFrame, организованный по заданным значениям индекса/столбца.
DataFrame.explode-
Развернуть DataFrame из столбцов со списками в длинную форму.
Примечания
См. руководство пользователя для получения дополнительных примеров.
Примеры
>>> df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'}, ... 'B': {0: 1, 1: 3, 2: 5}, ... 'C': {0: 2, 1: 4, 2: 6}}) >>> df A B C 0 a 1 2 1 b 3 4 2 c 5 6>>> df.melt(id_vars=['A'], value_vars=['B']) A variable value 0 a B 1 1 b B 3 2 c B 5
>>> df.melt(id_vars=['A'], value_vars=['B', 'C']) A variable value 0 a B 1 1 b B 3 2 c B 5 3 a C 2 4 b C 4 5 c C 6
Имена столбцов ‘variable’ и ‘value’ могут быть настраиваемыми:
>>> df.melt(id_vars=['A'], value_vars=['B'], ... var_name='myVarname', value_name='myValname') A myVarname myValname 0 a B 1 1 b B 3 2 c B 5
Исходные значения индекса могут быть сохранены:
>>> df.melt(id_vars=['A'], value_vars=['B', 'C'], ignore_index=False) A variable value 0 a B 1 1 b B 3 2 c B 5 0 a C 2 1 b C 4 2 c C 6
Если у вас многоуровневые столбцы:
>>> df.columns = [list('ABC'), list('DEF')] >>> df A B C D E F 0 a 1 2 1 b 3 4 2 c 5 6>>> df.melt(col_level=0, id_vars=['A'], value_vars=['B']) A variable value 0 a B 1 1 b B 3 2 c B 5
>>> df.melt(id_vars=[('A', 'D')], value_vars=[('B', 'E')]) (A, D) variable_0 variable_1 value 0 a B E 1 1 b B E 3 2 c B E 5© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.DataFrame.melt.html