How to Delete a Row Based on a Column Value in a Pandas DataFrame

Published Sep 10, 2022

Let’s see how we can delete a row based on a column value in a Pandas DataFrame.

1. Delete rows based on single column value

Suppose we have a DataFrame df, and we want to delete a row if the value of the column col in that row is equal to 0.

We have many different ways to drop a row based on a value. In this example, we’ll be dropped rows whose col value is 0.

df = df[df.col != 0]
df = df[df.col.ne(0)]
df = df[~df.col.eq(0)]
df = df.query('col != 0')
df = df.drop(df[df['col'] == 0].index)
df.drop(df.loc[df['col'] == 0].index, inplace=True)
df.drop(df.index[df['col'] == 0], inplace = True)

We can also drop rows based on multiple values for a single column.

Here, we’ll drop a row if col is equal to 0, 1, or 2.

df = df[~df['col'].isin([0, 1, 2])]

2. Delete rows based on multiple columns' values

Let’s say our df DataFrame now contains col1 and col2, and we want to delete a row if col1 == 0 and col2 == 999.

df = df[(df.col1 != 0) & (df.col2 != 999)]