Автор оригинала: 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