Как развернуть фрейм данных Pandas (с примером)


В pandas вы можете использовать функцию Melt () , чтобы развернуть DataFrame — преобразовать его из широкого формата в длинный формат .

Эта функция использует следующий базовый синтаксис:

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

куда:

  • id_vars : столбцы для использования в качестве идентификаторов
  • value_vars : Столбцы для разведения

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

Пример: развернуть фрейм данных Pandas

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
 'points': [18, 22, 19, 14, 14],
 'assists': [5, 7, 7, 9, 12],
 'rebounds': [11, 8, 10, 6, 6]})

#view DataFrame
print(df)

 team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6

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

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

#view updated DataFrame
print(df_unpivot)

 team variable value
0 A points 18
1 B points 22
2 C points 19
3 D points 14
4 E points 14
5 A assists 5
6 B assists 7
7 C assists 7
8 D assists 9
9 E assists 12
10 A rebounds 11
11 B rebounds 8
12 C rebounds 10
13 D rebounds 6
14 E rebounds 6

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

Результатом является DataFrame в длинном формате.

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

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

#view updated DataFrame
print(df_unpivot)

 team metric amount
0 A points 18
1 B points 22
2 C points 19
3 D points 14
4 E points 14
5 A assists 5
6 B assists 7
7 C assists 7
8 D assists 9
9 E assists 12
10 A rebounds 11
11 B rebounds 8
12 C rebounds 10
13 D rebounds 6
14 E rebounds 6

Обратите внимание, что новые столбцы теперь помечены как метрика и сумма .

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

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

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

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