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


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

df = pd.pivot(df, index='col1', columns='col2', values='col3')

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

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

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

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

import pandas as pd

#create DataFrame in long format
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'player': [1, 2, 3, 4, 1, 2, 3, 4],
 'points': [11, 8, 10, 6, 12, 5, 9, 4]})

#view DataFrame
df

 team player points
0 A 1 11
1 A 2 8
2 A 3 10
3 A 4 6
4 B 1 12
5 B 2 5
6 B 3 9
7 B 4 4

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

#reshape DataFrame from long format to wide format
df = pd.pivot(df, index='team', columns='player', values='points')

#view updated DataFrame
df

player 1 2 3 4
team 
A 11 8 10 6
B 12 5 9 4

DataFrame теперь имеет широкий формат.

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

Обратите внимание, что вместо этого мы могли бы использовать «игрок» в качестве столбца индекса и «команда» в качестве столбцов, если бы мы хотели:

#reshape DataFrame from long format to wide format
df = pd.pivot(df, index='player', columns='team', values='points')

#view updated DataFrame
df

team A B
player 
1 11 12
2 8 5
3 10 9
4 6 4

Этот DataFrame также имеет широкий формат.

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

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

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

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