如何将 pandas groupby 输出转换为 dataframe


本教程介绍如何将 pandas GroupBy 的输出转换为 pandas DataFrame。

示例:将 Pandas GroupBy 输出转换为 DataFrame

假设我们有以下 pandas DataFrame,显示来自不同球队的篮球运动员的得分:

 import pandas as pd

#createDataFrame
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 AG 5
1 AG 7
2AF 7
3 AC 10
4 BG 12
5 BF 22
6 BF 15
7 BF 10

我们可以使用以下语法来计算按团队位置分组的玩家数量:

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

#viewoutput
print (group)

team position
AC 1
      F 1
      G2
BF 3
      G 1
dtype: int64

从输出中,我们可以看到按球队位置分组的球员总数。

但是,假设我们希望输出在每一行中显示团队名称,如下所示:

 team position count
0 AC 1
1 AF 1
2 AG 2
3 BF 3
4 BG 1

为了达到这个结果,我们可以在运行 GroupBy 时简单地使用reset_index()

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

#viewoutput
print (df_out)

  team position count
0 AC 1
1 AF 1
2 AG 2
3 BF 3
4 BG 1

输出现在以所需的格式显示。

请注意, reset_index()中的name参数指定 GroupBy 生成的新列的名称。

我们还可以确认结果确实是一个 pandas DataFrame:

 #display object type of df_out
type (df_out)

pandas.core.frame.DataFrame

注意:您可以在此处找到 pandas 中 GroupBy 操作的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

Pandas:如何计算每组的累计和
Pandas:如何按组计算唯一值
Pandas:如何按组计算相关性

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注