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