Pandas:如何使用 group by 和where 条件
在 pandas 中将group by与Where条件结合使用的最简单方法是使用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 计算唯一值