Pandas:如何对两列进行分组并聚合
您可以将以下基本语法与 pandas 中的groupby()函数一起使用,以按两列进行分组并聚合另一列:
df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()
此特定示例按列var1和var2对 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 创建条形图