Автор оригинала: Pankaj Kumar.
Функция Pandas Melt () используется для изменения формата DataFrame из шириной до длительного времени. Он используется для создания определенного формата объекта DataFrame, в котором один или несколько столбцов работают как идентификаторы. Все оставшиеся столбцы рассматриваются как значения и необотаются на ось строки и только два столбца – Переменная и ценность Отказ
1. Pandas Melt () Пример
Использование функции MELT () более ясна при просмотре примера.
import pandas as pd d1 = {"Name": ["Pankaj", "Lisa", "David"], "ID": [1, 2, 3], "Role": ["CEO", "Editor", "Author"]} df = pd.DataFrame(d1) print(df) df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"]) print(df_melted)
Выход:
Name ID Role 0 Pankaj 1 CEO 1 Lisa 2 Editor 2 David 3 Author ID variable value 0 1 Name Pankaj 1 2 Name Lisa 2 3 Name David 3 1 Role CEO 4 2 Role Editor 5 3 Role Author
Мы можем передавать параметры «var_name» и «value_name», чтобы изменить имена столбцов «Переменную» и «значение».
df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"], var_name="Attribute", value_name="Value")
2. Несколько колонн как id_vars
Посмотрим, что произойдет, когда мы передаем несколько столбцов в качестве параметра ID_VARS.
df_melted = pd.melt(df, id_vars=["ID", "Name"], value_vars=["Role"]) print(df_melted)
Выход:
ID Name variable value 0 1 Pankaj Role CEO 1 2 Lisa Role Editor 2 3 David Role Author
3. Пропуск колонн в функции MELT ()
Не требуется использовать все строки из источника DataFrame. Давайте пропустим столбец «ID» в следующем примере.
df_melted = pd.melt(df, id_vars=["Name"], value_vars=["Role"]) print(df_melted)
Выход:
Name variable value 0 Pankaj Role CEO 1 Lisa Role Editor 2 David Role Author
4. Невозможное значение dataframe с использованием функции pivot ()
Мы можем использовать функцию Pivot (), чтобы нерешить объект DataFrame и получить исходное dataframe. Значение параметра функции Pivot () () должно быть таким же, как значение «id_vars». Значение «столбцов» следует пропущено как имя столбца «Переменная».
import pandas as pd d1 = {"Name": ["Pankaj", "Lisa", "David"], "ID": [1, 2, 3], "Role": ["CEO", "Editor", "Author"]} df = pd.DataFrame(d1) # print(df) df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"], var_name="Attribute", value_name="Value") print(df_melted) # unmelting using pivot() df_unmelted = df_melted.pivot(index='ID', columns='Attribute') print(df_unmelted)
Выход:
ID Attribute Value 0 1 Name Pankaj 1 2 Name Lisa 2 3 Name David 3 1 Role CEO 4 2 Role Editor 5 3 Role Author Value Attribute Name Role ID 1 Pankaj CEO 2 Lisa Editor 3 David Author
Неожиданные значения DataFrame такие же, как исходное dataframe. Но столбцы и индекс нуждаются в незначительных изменениях, чтобы сделать его точно так же, как оригинальный кадр данных.
df_unmelted = df_unmelted['Value'].reset_index() df_unmelted.columns.name = None print(df_unmelted)
Выход:
ID Name Role 0 1 Pankaj CEO 1 2 Lisa Editor 2 3 David Author
Ссылка : Pandas elt () API DOC