pandas.melt
-
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)[source] -
“Развертывает” DataFrame из широкого формата в длинный, необязательно оставляя идентификационные переменные.
Эта функция полезна для преобразования DataFrame в формат, где одна или несколько колонок являются идентификационными переменными (
id_vars), а все остальные колонки, рассматриваемые как измеряемые переменные (value_vars), “развертываются” по оси строк, оставляя только две колонки, не являющиеся идентификационными, ‘variable’ и ‘value’.Параметры: frame : DataFrame
id_vars : кортеж, список или массив ndarray, необязательно
Столбец(ы) для использования в качестве идентификационных переменных.
value_vars : кортеж, список или массив ndarray, необязательно
Столбец(ы) для развертывания. Если не указано, используются все колонки, которые не заданы как
id_vars.var_name : скаляр
Имя для колонки ‘variable’. Если None, используется
frame.columns.nameили ‘variable’.value_name : скаляр, по умолчанию ‘value’
Имя для колонки ‘value’.
col_level : целое число или строка, необязательно
Если колонки являются многоуровневым индексом, используйте этот уровень для развертывания.
См. также
Примеры
>>> 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>>> pd.melt(df, id_vars=['A'], value_vars=['B']) A variable value 0 a B 1 1 b B 3 2 c B 5
>>> pd.melt(df, 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’ можно настроить:
>>> pd.melt(df, 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>>> pd.melt(df, col_level=0, id_vars=['A'], value_vars=['B']) A variable value 0 a B 1 1 b B 3 2 c B 5
>>> pd.melt(df, 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.22.0/generated/pandas.melt.html