How to drop rows in Pandas

In this post, we will see how to drop rows in Pandas.
[toc]
You can use DataFrame.drop() method to drop rows in DataFrame in Pandas.

Syntax of DataFrame.drop()

DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

Here,
labels: index or columns to remove.
axis:axis=0 is used to delete rows and axis=1 is used to delete columns. For this post, we will use axis=0 to delete rows. Since axis=0 is the default value, we can ignore this attribute.
columns: It is an alternative to labels and uses to drop columns(Introduced in version 0.21).
index: It is an alternative to labels and uses to drop indices(Introduced in version 0.21).
inplace:If False, it won’t modify the original DataFrame.

Pandas Drop rows based on index

You can specify index labels to drop rows.

Delete single row

Here is an example:

import pandas as pd

dic = {'Name': ['India','China','Bhutan','Russia'], "Population": [20000,40000,1000,10000]}
Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four'])
print("-------Original Dataframe-------\n",Country_df)

#Drop index Two
Country_df = Country_df.drop(labels='Two')
print("-------Changed Dataframe-------\n",Country_df)

Output:

-------Original Dataframe-------
          Name  Population
One     India       20000
Two     China       40000
Three  Bhutan        1000
Four   Russia       10000
-------Changed Dataframe-------
          Name  Population
One     India       20000
Three  Bhutan        1000
Four   Russia       10000

As you can see, row with index Two got dropped from Pandas DataFrame.

Delete multiple rows

Change highlight line to delete Three and Four indices.

#Drop indices Three and Four
Country_df = Country_df.drop(labels=['Three','Four'])

Output:

-------Original Dataframe-------
          Name  Population
One     India       20000
Two     China       40000
Three  Bhutan        1000
Four   Russia       10000
-------Changed Dataframe-------
       Name  Population
One  India       20000
Two  China       40000

As you can see, rows with index Three and Four got dropped from Pandas DataFrame.
In case, you want to modify original DataFrame you can pass inplace=True

#Drop indices Three and Four
Country_df.drop(labels=['Three','Four'],inPlace=True)

As you can see, you don’t have to reassign Country_df now.

Pandas Drop rows with conditions

You can also drop rows based on certain conditions.

Here is an example:
Let’s say you want to delete all the rows for which the population is less than or equal to 10000.
You can get index of all such rows by putting conditions and pass it to drop() method.

import pandas as pd

dic = {'Name': ['India','China','Bhutan','Russia'], "Population": [20000,40000,1000,10000]}
Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four'])
 
print("-------Original Dataframe-------\n",Country_df)

#Delete all the rows whose population is less than 10000
Country_df.drop(Country_df[Country_df['Population']<=10000].index,inplace=True)
print("-------Changed Dataframe-------\n",Country_df)

Output:

-------Original Dataframe-------
          Name  Population
One     India       20000
Two     China       40000
Three  Bhutan        1000
Four   Russia       10000
-------Changed Dataframe-------
       Name  Population
One  India       20000
Two  China       40000

Pandas Drop rows with NaN

You can drop values with NaN rows using dropna() method.
Here is an example:

import numpy as np
import pandas as pd

dic = {'Name': ['India','China','Bhutan','Russia'], "Population": ['NaN',40000,'NaN',10000]}
Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four'])
Country_df =Country_df.replace('NaN',np.NaN)
print("-------Original Dataframe-------\n",Country_df)


Country_df = Country_df.dropna()
print("-------Changed Dataframe-------\n",Country_df)

Output:

-------Original Dataframe-------
          Name  Population
One     India         NaN
Two     China     40000.0
Three  Bhutan         NaN
Four   Russia     10000.0
-------Changed Dataframe-------
         Name  Population
Two    China     40000.0
Four  Russia     10000.0

As you can see, rows that contain NaN were dropped from the Pandas DataFrame.

Pandas Drop duplicate rows

You can drop duplicate rows with DataFrame.drop_duplicates() method.
Here is an example:

import pandas as pd

dic = {'Name': ['India','China','India','Russia'], "Population": [20000,40000,20000,10000]}

Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four'])

print("-------Original Dataframe-------\n",Country_df)
Country_df = Country_df.drop_duplicates()
Country_df = Country_df.dropna()
print("-------Changed Dataframe-------\n",Country_df)

Output:

-------Original Dataframe-------
          Name  Population
One     India       20000
Two     China       40000
Three   India       20000
Four   Russia       10000
-------Changed Dataframe-------
         Name  Population
One    India       20000
Two    China       40000
Four  Russia       10000

As you can see, rows that contain duplicate data were dropped from the Pandas DataFrame.
That’s all about How to drop rows in Pandas.

[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.