Pandas: як змінити форму dataframe з довгого на широкий
Ви можете використовувати наступний базовий синтаксис, щоб перетворити pandas DataFrame з довгого формату на широкий:
df = pd. pivot (df, index=' col1 ', columns=' col2 ', values=' col3 ')
У цьому сценарії col1 стане індексом, col2 стане стовпцями, а col3 використовуватиметься як значення всередині DataFrame.
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: змініть форму Pandas DataFrame з Long на Wide
Припустімо, що ми маємо такий пандас 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 to 1 11 1 to 2 8 2 to 3 10 3 to 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.
Зауважте, що натомість ми можемо використовувати «player» як стовпець індексу та «team» як стовпці, якщо бажаємо:
#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