Как преобразовать вывод Pandas GroupBy в DataFrame


В этом руководстве объясняется, как преобразовать выходные данные pandas GroupBy в pandas DataFrame.

Пример: преобразование вывода Pandas GroupBy в DataFrame

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'position': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'F'],
 'points': [5, 7, 7, 10, 12, 22, 15, 10]})

#view DataFrame
print(df)

 team position points
0 A G 5
1 A G 7
2 A F 7
3 A C 10
4 B G 12
5 B F 22
6 B F 15
7 B F 10

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

#count number of players, grouped by team and position
group = df.groupby(['team', 'position']). size ()

#view output
print(group)

team position
A C 1
 F 1
 G 2
B F 3
 G 1
dtype: int64

Из вывода мы можем увидеть общее количество игроков, сгруппированных по командам и позициям .

Однако предположим, что мы хотим, чтобы наш вывод отображал название команды в каждой строке следующим образом:

team position count
0 A C 1
1 A F 1
2 A G 2
3 B F 3
4 B G 1

Чтобы добиться этого вывода, мы можем просто использовать reset_index() при выполнении GroupBy:

#count number of players, grouped by team and position
df_out = df.groupby(['team', 'position']). size().reset_index(name='count')

#view output
print(df_out)

 team position count
0 A C 1
1 A F 1
2 A G 2
3 B F 3
4 B G 1

Вывод теперь отображается в том формате, который мы хотели.

Обратите внимание, что аргумент имени в функции reset_index() указывает имя нового столбца, созданного GroupBy.

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

#display object type of df_out
type (df_out)

pandas.core.frame.DataFrame

Примечание.Полную документацию по операции GroupBy в pandas можно найти здесь .

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

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

Pandas: как рассчитать совокупную сумму по группе
Pandas: как подсчитать уникальные значения по группам
Pandas: как рассчитать корреляцию по группе