Pandas:如何对两列进行分组并聚合


您可以将以下基本语法与 pandas 中的groupby()函数一起使用,以按两列进行分组并聚合另一列:

 df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()

此特定示例按列var1var2对 DataFrame 进行分组,然后计算列var3的平均值。

以下示例展示了如何使用以下 pandas DataFrame 对两列进行分组和聚合:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'],
                   ' points ': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]})

#view DataFrame
print (df)

  team position points
0 AG 15
1 AG 22
2 AF 24
3 AF 25
4 AF 20
5 BG 35
6 BG 34
7 BG 19
8 BG 14
9 BF 12

示例 1:将两列分组并计算另一列的平均值

我们可以使用以下语法来计算分数列的平均值,按球队位置列分组:

 #calculate mean of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. mean ()

team position
AF23.0
      G 18.5
BF 12.0
      G 25.5
Name: points, dtype: float64

从结果我们可以看出:

  • A队F位置球员的平均分值为23
  • A队G位置球员的平均分值为18.5

等等。

示例 2:将两列分组并计算另一列的最大值

我们可以使用以下语法来计算按团队位置列分组的点数列的最大值:

 #calculate max of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. max ()

team position
AF25
      G22
BF 12
      G 35
Name: points, dtype: int64

从结果我们可以看出:

  • A 队 F 位置球员的最高分值为25
  • A队G位置球员的最高分值为22

等等。

示例 3:按两列分组并计算出现次数

我们可以使用以下语法来计算团队位置列的每个组合的出现次数:

 #count occurrences of each combination of team and position columns
df. groupby ([' team ', ' position ']). size ()

team position
AF3
      G2
BF 1
      G4
dtype: int64

从结果我们可以看出:

  • A队有3名球员,位置F。
  • A队有2名球员,位置为G。

等等。

其他资源

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

如何使用 Pandas GroupBy 计算唯一值
如何将函数应用于 Pandas Groupby
如何从 Pandas GroupBy 创建条形图

添加评论

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