pandas.melt
- pandas.melt(frame, 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:скаляр, кортеж, список или массив ndarray, необязательно
-
Колонки, используемые как переменные-идентификаторы.
- value_vars:скаляр, кортеж, список или массив ndarray, необязательно
-
Колонки, подлежащие развороту. Если не указано, используются все колонки, которые не заданы как id_vars.
- var_name:скаляр, по умолчанию None
-
Имя для колонки ‘variable’. Если None, используется
frame.columns.nameили ‘variable’. - value_name:скаляр, по умолчанию ‘value’
-
Имя для колонки ‘value’, не может быть существующим именем колонки.
- col_level:скаляр, необязательно
-
Если колонки являются многоуровневым индексом, использовать этот уровень для разворота.
- ignore_index:bool, по умолчанию True
-
Если True, исходный индекс игнорируется. Если False, исходный индекс сохраняется. Метки индекса будут повторяться по мере необходимости.
- Возвращаемое значение:
-
- DataFrame
-
Преобразованный 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>>> 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
Оригинальные значения индекса можно сохранить:
>>> pd.melt(df, 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>>> 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–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/2.2.2/reference/api/pandas.melt.html