Open In App

Filter Pandas dataframe in Python using ‘in’ and ‘not in’

Last Updated : 05 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

The in and not in operators can be used with Pandas DataFrames to check if a given value or set of values is present in the DataFrame or not using Python. The in-operator returns a boolean value indicating whether the specified value is present in the DataFrame, while the not-in-operator returns a boolean value indicating whether the specified value is not present in the DataFrame. 

This operator can be used with the .query() method of a Pandas DataFrame to filter the DataFrame based on a given set of values. The .query() method takes a string containing a Boolean expression as input and returns a new DataFrame containing only the rows that satisfy the given expression.

Filter Pandas Dataframe in Python using ‘in’ keyword

The in keyword has two purposes, first to check if a value is present in a list, tuple, range, string, etc. and another is to iterate through a sequence in a for a loop.

Example 1

Here is an example of how the in operator can be used with the .query() method to filter a DataFrame:

Python3




import pandas as pd
  
# Create a DataFrame with some sample data
df = pd.DataFrame({"A": [1, 2, 3, 4], 
                   "B": [5, 6, 7, 8]})
  
# Filter the DataFrame to include only rows 
# where column "A" has a value of 1 or 2
df = df.query("A in [1, 2]")
  
# Print the resulting DataFrame
print(df)


Output:

   A  B
0  1  5
1  2  6

Example 2

The in operator can also be used in more complex expressions with the .query() method, to combine multiple conditions and apply logical operators such as and/or. 

Python3




# Filter the DataFrame to include only rows 
# where column "A" has a value of 1 or 2, and 
# column "B" has a value of 6 or 7
df = df.query("A in [1, 2] and B in [6, 7]")
  
# Print the resulting DataFrame
print(df)


Output:

   A  B
1  2  6

Filter Pandas Dataframe in Python using the ‘not in’ keyword

Python not keyword is a logical operator which is usually used for figuring out the negation or opposite boolean value of the operand.

Example 1

To use the `not in` operator with the .query() method of a Pandas DataFrame, you can simply negate the expression using the not keyword. 

Python3




import pandas as pd
  
# Create a DataFrame with some sample data
df = pd.DataFrame({"A": [1, 2, 3, 4], "B": [5, 6, 7, 8]})
  
# Filter the DataFrame to exclude rows
# where column "A" has a value of 1 or 2
df = df.query("not A in [1, 2]")
  
# Print the resulting DataFrame
print(df)


Output:

   A  B
2  3  7
3  4  8

Example 2

Here is the example with the ‘not in’ operator.

Python3




# Filter the DataFrame to exclude rows 
# where column "A" has a value of 1 or 2, and 
# column "B" has a value of 6 or 7
df = df.query("not (A in [1, 2] and B in [6, 7])")
  
# Print the resulting DataFrame
print(df)


Output:

   A  B
0  1  5
2  3  7
3  4  8


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads