Table of Contents
In pandas, you can drop rows based on multiple conditions by creating a boolean mask based on the conditions and then calling the DataFrame’s ‘drop’ method with the mask passed as an argument. For example, to drop rows based on multiple conditions, such as the value of a certain column being less than 0, and the value of another column being greater than 0, you could create a boolean mask of the form df[‘column1’] < 0 & df[‘column2’] > 0 and then call df.drop(mask, inplace = True). This will drop rows from the DataFrame based on the conditions in the boolean mask.
You can use the following methods to drop rows based on multiple conditions in a pandas DataFrame:
Method 1: Drop Rows that Meet One of Several Conditions
df = df.loc[~((df['col1'] == 'A') | (df['col2'] > 6))]
This particular example will drop any rows where the value in col1 is equal to A or the value in col2 is greater than 6.
Method 2: Drop Rows that Meet Several Conditions
df = df.loc[~((df['col1'] == 'A') & (df['col2'] > 6))]
This particular example will drop any rows where the value in col1 is equal to A and the value in col2 is greater than 6.
The following examples show how to use each method in practice with the following pandas DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'pos': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], 'assists': [5, 7, 7, 9, 12, 9, 3, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame df team pos assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 3 9 7 B F 4 12
Example 1: Drop Rows that Meet One of Several Conditions
The following code shows how to drop rows in the DataFrame where the value in the team column is equal to A or the value in the assists column is greater than 6:
#drop rows where value in team column == 'A' or value in assists column > 6
df = df.loc[~((df['team'] == 'A') | (df['assists'] > 6))]
#view updated DataFrame
print(df)
team pos assists rebounds
6 B F 3 9
7 B F 4 12
Notice that any rows where the team column was equal to A or the assists column was greater than 6 have been dropped.
For this particular DataFrame, six of the rows were dropped.
Note: The | symbol represents “OR” logic in pandas.
Example 2: Drop Rows that Meet Several Conditions
The following code shows how to drop rows in the DataFrame where the value in the team column is equal to A and the value in the assists column is greater than 6:
#drop rows where value in team column == 'A' and value in assists column > 6
df = df.loc[~((df['team'] == 'A') & (df['assists'] > 6))]
#view updated DataFrame
print(df)
team pos assists rebounds
0 A G 5 11
4 B G 12 6
5 B G 9 5
6 B F 3 9
7 B F 4 12
Notice that any rows where the team column was equal to A and the assists column was greater than 6 have been dropped.
For this particular DataFrame, three of the rows were dropped.
Note: Th & symbol represents “AND” logic in pandas.