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:скаляр
-
Имя для столбца ‘variable’. Если None, используется
frame.columns.nameили ‘variable’. - value_name:скаляр, по умолчанию ‘value’
-
Имя для столбца ‘value’.
- col_level:int или str, необязательно
-
Если колонки являются многоуровневым индексом, используйте этот уровень для разворота.
- ignore_index:bool, по умолчанию True
-
Если True, исходный индекс игнорируется. Если False, исходный индекс сохраняется. Метки индекса будут повторяться по мере необходимости.
Новая в версии 1.1.0.
- Возвращает
-
- 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/1.5.0/reference/api/pandas.melt.html