Найти тему
Властелин машин

Отмена вращения матрицы (unpivot) средствами Pandas

Операция обратная pivot (получению сводной формы) в Pandas реализована функцией melt. Для демонстрации ее применения сгенерируем датафрейм:

Melt преобразует матрицу в форму:

индексные_столбцы...имя_столбца...значение_столбца

Вызовем эту функцию на наших данных и посмотрим, что получится (индексные столбцы - 'firm' и 'year', остальные - колонки значений)

-2

Как можно заметить, через переменную var_name можно задать имя столбца с наименованиями колонок.

Полученные данные можно вернуть в широкий формат функцией pivot:

-3

Отмена вращения сохраняет возможность возврата к прежней форме в случае использования любых индексных комбинаций, например, самого индексного столбца:

-4

-5

Если в функцию melt в качестве параметр id_vars передать колонки, которые не характеризуют однозначно другие столбцы, то вернуть широкий формат станет проблемой:

-6

-7

Действительно, теперь возникают неоднозначности, например, для пары Роза, banana есть два value, и не понятно, какое из низ выбрать.

-8