Spec-Zone.ru › pandas 0.23

pandas.DataFrame.melt

DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None) [source]

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

Эта функция полезна для преобразования DataFrame в формат, где одна или несколько колонок являются идентификационными переменными (id_vars), а все остальные колонки, считающиеся измерительными переменными (value_vars), «преобразуются» в строковый индекс, оставляя только две колонки, не являющиеся идентификаторами, «переменная» и «значение».

Новая в версии 0.20.0.

Параметры:
frame : DataFrame

id_vars : кортеж, список или массив NumPy, необязательно

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

value_vars : кортеж, список или массив NumPy, необязательно

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

var_name : скаляр

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

value_name : скаляр, по умолчанию «значение»

Имя для использования в столбце «значение».

col_level : целое число или строка, необязательно

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

См. также

melt, pivot_table, DataFrame.pivot

Примеры

>>> import pandas as pd
>>> 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

Имена столбцов «переменная» и «значение» можно настроить:

>>> 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.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–2012, 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/0.23.4/generated/pandas.DataFrame.melt.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API