💡 Outline
Here is the code to select rows by pandas Loc multiple conditions.
12345678 import pandas as pddf = pd.DataFrame([['Jay','M',21],['Jennifer','F',17],['Preity','F',19],['Neil','M',17]],columns = ['Name','Gender','Age'])print(df.loc[(df['Age']>18)&(df['Name']=='Jay')])Here, we are select rows of DataFrame where age is greater than 18 and name is equal to Jay.
1234 Name Gender Age0 Jay M 21
The loc()
function in a pandas
module is used to access values from a DataFrame based on some labels. It returns the rows and columns which match the labels.
We can use this function to extract rows from a DataFrame based on some conditions also. First, let us understand what happens when we provide a condition with the DataFrame.
See the code below.
1 2 3 4 5 6 7 |
import pandas as pd df = pd.DataFrame([['Jay','M',21],['Jennifer','F',17], ['Preity','F',19],['Neil','M',17]], columns = ['Name','Gender','Age']) print(df['Age']>18) |
Output:
1 2 3 4 5 6 7 |
0 True 1 False 2 True 3 False Name: Age, dtype: bool |
Note that this returns a Series object with
True
orFalse
values depending on the rows. We can use this object to extract the rows which satisfy the condition.
For example,
1 2 3 4 5 6 7 |
import pandas as pd df = pd.DataFrame([['Jay','M',21],['Jennifer','F',17], ['Preity','F',19],['Neil','M',17]], columns = ['Name','Gender','Age']) print(df[df['Age']>18]) |
Output:
1 2 3 4 5 |
Name Gender Age 0 Jay M 21 2 Preity F 19 |
In the above example, we extracted the rows from a DataFrame where age was greater than 18
. Similarly, we can specify multiple conditions.
While giving multiple conditions, remember that we need to separate the conditions using the relational operators.
- We can use the
OR
operator when we want to print the rows if at least even one condition is True. - The
AND
operator is used when we wish to return rows where both the conditions are True.
We can use the loc()
function also to extract rows based on some condition. We will repeat what we did in the previous example using the loc()
function.
See the code below.
1 2 3 4 5 6 7 |
import pandas as pd df = pd.DataFrame([['Jay','M',21],['Jennifer','F',17], ['Preity','F',19],['Neil','M',17]], columns = ['Name','Gender','Age']) print(df.loc[(df['Age']>18)]) |
Output:
1 2 3 4 5 |
Name Gender Age 0 Jay M 21 2 Preity F 19 |
This method is a lot cleaner. Now we will specify multiple conditions within the loc()
function.
For example,
1 2 3 4 5 6 7 |
import pandas as pd df = pd.DataFrame([['Jay','M',21],['Jennifer','F',17], ['Preity','F',19],['Neil','M',17]], columns = ['Name','Gender','Age']) print(df.loc[(df['Age']>18)&(df['Name']=='Jay')]) |
Output:
1 2 3 4 |
Name Gender Age 0 Jay M 21 |
In the above example, we extracted the rows from the DataFrame, where the Name
was equal to Jay
and Age
was greater than 18. Both the conditions were separated using the &
operator. This required both the conditions to be true in any given row.
That’s all about how to Select rows with Pandas loc multiple conditions.