Pandas: как изменить форму DataFrame с широкого на длинный


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

df = pd.melt (df, id_vars='col1', value_vars=['col2', 'col3', ...])

В этом сценарии col1 — это столбец, который мы используем в качестве идентификатора, а col2 , col3 и т. д. — это столбцы, которые мы отменяем.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: изменение формы кадра данных Pandas с широкого на длинный

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D'],
 'points': [88, 91, 99, 94],
 'assists': [12, 17, 24, 28],
 'rebounds': [22, 28, 30, 31]})

#view DataFrame
df

 team points assists rebounds
0 A 88 12 22
1 B 91 17 28
2 C 99 24 30
3 D 94 28 31

Мы можем использовать следующий синтаксис, чтобы преобразовать этот DataFrame из широкого формата в длинный формат:

#reshape DataFrame from wide format to long format
df = pd.melt (df, id_vars='team', value_vars=['points', 'assists', 'rebounds'])

#view updated DataFrame
df

 team variable value
0 A points  88
1 B points  91
2 C points  9 9
3 D points  94
4 A assists  12
5 B assists  17
6 C assists  24
7 D assists  28
8 A rebounds 22
9 B rebounds 28
10 C rebounds 30
11 D rebounds 31

DataFrame теперь имеет длинный формат.

Мы использовали столбец «команда» в качестве столбца идентификатора и не сводили столбцы «очки», «передачи» и «подборы».

Обратите внимание, что мы также можем использовать аргументы var_name и value_name для указания имен столбцов в новом длинном DataFrame:

#reshape DataFrame from wide format to long format
df = pd.melt (df, id_vars='team', value_vars=['points', 'assists', 'rebounds'],
 var_name='metric', value_name='amount')

#view updated DataFrame
df

 team metric amount
0 A points 88
1 B points 91
2 C points 99
3 D points 94
4 A assists 12
5 B assists 17
6 C assists 24
7 D assists 28
8 A rebounds 22
9 B rebounds 28
10 C rebounds 30
11 D rebounds 31

Примечание.Полную документацию по функции Melt () можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:

Как добавить строки в Pandas DataFrame
Как добавить столбцы в Pandas DataFrame
Как подсчитать вхождения определенных значений в Pandas DataFrame

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.