How to Delete a Row Based on a Column Value in a Pandas DataFrame
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)]