Как преобразовать сводную таблицу Pandas в DataFrame


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

df = pivot_name. reset_index()

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

Пример: преобразование сводной таблицы в DataFrame

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'position': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
 'points': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

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

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

#create pivot table
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position')

#view pivot table
df_pivot

position F G
team 
A 8.0 9.5
B 10.5 5.5

Затем мы можем использовать функцию reset_index() для преобразования этой сводной таблицы в DataFrame pandas:

#convert pivot table to DataFrame
df2 = df_pivot. reset_index()

#view DataFrame
df2

 team F G
0 A 8.0 9.5
1 B 10.5 5.5

Результатом является пандас DataFrame с двумя строками и тремя столбцами.

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

#convert pivot table to DataFrame
df2. columns = ['team', 'Forward_Pts', 'Guard_Pts']

#view updated DataFrame
df2

 team Forward_Pts Guard_Pts
0 A 8.0 9.5
1 B 10.5 5.5

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

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

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