Метод melt
Метод melt применяется к DataFrame
и выполняет обратное преобразование по отношению к pivot.
Он "расплавляет" данные, превращая несколько столбцов-переменных
в строки с указанием имени переменной и её значения.
Основные параметры: id_vars - столбцы-идентификаторы,
которые остаются на месте, value_vars - столбцы,
которые будут "расплавлены". Параметры var_name и
value_name позволяют задать имена новых столбцов.
Синтаксис
df.melt(id_vars=None, value_vars=None, var_name=None, value_name='value')
Пример
Преобразуем таблицу с данными по годам в длинный формат:
import pandas as pd
df = pd.DataFrame({
'id': [1, 2, 3],
'year_2020': [100, 200, 300],
'year_2021': [150, 250, 350]
})
res = df.melt(id_vars=['id'], value_vars=['year_2020', 'year_2021'])
print(res)
Результат выполнения кода:
id variable value
0 1 year_2020 100
1 2 year_2020 200
2 3 year_2020 300
3 1 year_2021 150
4 2 year_2021 250
5 3 year_2021 350
Пример
Изменим имена результирующих столбцов с помощью
var_name и value_name:
import pandas as pd
df = pd.DataFrame({
'id': [1, 2, 3],
'year_2020': [100, 200, 300],
'year_2021': [150, 250, 350]
})
res = df.melt(
id_vars=['id'],
value_vars=['year_2020', 'year_2021'],
var_name='year',
value_name='sales'
)
print(res)
Результат выполнения кода:
id year sales
0 1 year_2020 100
1 2 year_2020 200
2 3 year_2020 300
3 1 year_2021 150
4 2 year_2021 250
5 3 year_2021 350
Пример
Если не указать id_vars и value_vars,
метод "расплавит" все столбцы:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2],
'b': [10, 20],
'c': [100, 200]
})
res = df.melt()
print(res)
Результат выполнения кода:
variable value
0 a 1
1 a 2
2 b 10
3 b 20
4 c 100
5 c 200
Смотрите также
-
метод
pivot,
который выполняет обратное преобразование из длинного формата в широкий -
метод
pivot_table,
который создает сводную таблицу с агрегацией -
метод
stack,
который "сжимает" столбцы в строки индекса -
метод
unstack,
который "разворачивает" строки индекса в столбцы