How to drop rows based on multiple conditions in pandas.

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.

x