# Pandas: How to Use Group By with Where Condition

The easiest way to use group by with a where condition in pandas is to use the query() function:

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

This particular example example calculates the mean value of points, grouped by position, where team is equal to ‘A’ in some pandas DataFrame.

The following example shows how to use this syntax in practice.

## Example: How to Use Group By with Where Condition in Pandas

Suppose we have the following pandas DataFrame that contains information about various basketball players:

```import pandas as pd

#create DataFrame
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    A        G      22
1    A        G      14
2    A        F      15
3    A        F      10
4    A        F       8
5    B        G      29
6    B        G      33
7    B        F      18
```

We can use the following code to calculate the mean value of points, grouped by position, where team is equal to ‘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
1	G	  18.0
```

From the output we can see:

• The mean points value for players in position ‘F’ is on team A is 11.
• The mean points value for players in position ‘G’ on team A is 18.

Note that we can also use the & operator in the query() function to query for rows where multiple conditions are met.

For example, the following code shows how to calculate the mean value of points, grouped by position, where team is equal to ‘A’ and position is equal to ‘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
0	G	  18.0
```

From the output we can see that the mean points value for players in position ‘G’ on team A is 18.

Since we specified two conditions in the query() function, only the rows that met both conditions were used.