pandas.DataFrame.melt#

DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)[источник]#

Преобразовать DataFrame из широкого в длинный формат, опционально оставляя идентификаторы установленными.

Эта функция полезна для преобразования DataFrame в формат, где один или несколько столбцов являются идентификационными переменными (id_vars), в то время как все остальные столбцы, рассматриваемые как измеряемые переменные (value_vars), "разворачиваются" на ось строк, оставляя только два неидентификационных столбца, 'variable' и 'value'.

Параметры:
id_varsскаляр, кортеж, список или ndarray, необязательный

Столбец(цы), используемые в качестве идентификационных переменных.

value_varsскаляр, кортеж, список или ndarray, необязательный

Столбец(цы) для распаковки. Если не указано, используются все столбцы, которые не установлены как id_vars.

var_nameскаляр, по умолчанию None

Имя для использования в столбце 'variable'. Если None, используется frame.columns.name или 'переменная'.

value_nameскаляр, по умолчанию 'value'

Имя для использования в столбце 'value', не может быть существующей меткой столбца.

col_levelскаляр, опционально

Если столбцы являются MultiIndex, используйте этот уровень для преобразования.

ignore_indexbool, по умолчанию True

Если True, исходный индекс игнорируется. Если False, исходный индекс сохраняется. Метки индекса будут повторяться по мере необходимости.

Возвращает:
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