Pandas:如何使用 group by 和where 条件


在 pandas 中将group byWhere条件结合使用的最简单方法是使用query()函数:

 df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

这个特定的示例计算的平均值,按位置分组,其中团队在某些 pandas DataFrame 中等于“A”。

以下示例展示了如何在实践中使用此语法。

示例:如何在 Pandas 中使用 Group By 和Where 条件

假设我们有以下 pandas DataFrame,其中包含有关各种篮球运动员的信息:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [22, 14, 15, 10, 8, 29, 33, 18]})

#view DataFrame
print (df)

  team position points
0 AG 22
1 AG 14
2 AF15
3 AF 10
4 AF 8
5 BG 29
6 BG 33
7 BF 18

我们可以使用以下代码来计算平均分值,按位置分组,其中团队等于“A”:

 #calculate mean value of points, grouped by position, where team == 'A'
df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

        position points
0 F 11.0
1G 18.0

从结果我们可以看出:

  • A 队中位置“F”的球员的平均分值为11 分
  • A队“G”位置球员的平均分值为18分

请注意,我们还可以在query()函数中使用&运算符来查找满足多个条件的行。

例如,以下代码显示如何计算按位置分组的平均分值,其中团队等于“A” 位置等于“G”:

 #calculate mean value of points by position where team is 'A' and position is 'G'
df. query (" team=='A' & position=='G' "). groupby ([" position "])[" points "]. mean (). reset_index ()

	position points
0G 18.0

从结果中我们可以看出,A队G位置球员的平均分值为18

由于我们在query()函数中指定了两个条件,因此仅使用满足这两个条件的行。

其他资源

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

如何在 Pandas 中执行 GroupBy 求和
如何在 Pandas 中使用 Groupby 和 Plot
如何在 Pandas 中使用 GroupBy 计算唯一值

添加评论

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