In this article, we will discuss how to delete the rows of a dataframe which contain all NaN values or missing values.

**Table of Contents**

We are going to use the pandas dropna() function. So, first let’s have a little overview of it,

## Overview of dataframe.dropna()function

Pandas provide a function to delete rows or columns from a dataframe based on NaN or missing values in it.

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

**Arguments:**

**axis**: Default – 0- 0, or â€˜indexâ€™ : Drop rows which contain NaN values.
- 1, or â€˜columnsâ€™ : Drop columns which contain NaN value.

**how**: Default – ‘any’- â€˜anyâ€™ : Drop rows / columns which contain any NaN values.
- â€˜allâ€™ : Drop rows / columns which contain all NaN values.

**thresh**(int): Optional- Delete rows/columns which contains less than minimun thresh number of non-NaN values.

**inplace**(bool): Default- False- If True, modifies the calling dataframe object

**Returns**

- If inplace==True, the return None, else returns a new dataframe by deleting the rows/columns based on NaN values.

Let’s use this to perform our task of deleting rows with all NaN values.

### Frequently Asked:

- Pandas – Check if all values in a Column are Equal
- Replace column values by condition in Pandas
- Pandas: Select rows without NaN values
- Select Rows by Timestamp in Pandas

## Pandas: Delete rows of dataframe with all NaN values

Suppose we have a dataframe that contains few rows with all NaN values,

Contents of the Dataframe : 0 1 2 3 0 Jack 34.0 Sydney 5.0 1 Riti 31.0 Delhi NaN 2 NaN NaN NaN NaN 3 Aadi 16.0 London 11.0 4 Mark NaN Delhi 12.0 5 NaN NaN NaN NaN

Now we want to delete all those rows from this dataframe which contains all NaN values (rows with index 2 and 5). So, new dataframe should be like this,

0 1 2 3 0 Jack 34.0 Sydney 5.0 1 Riti 31.0 Delhi NaN 3 Aadi 16.0 London 11.0 4 Mark NaN Delhi 12.0

For this we can use a pandas dropna() function. It can delete the rows / columns of a dataframe that contains all or few NaN values. As we want to delete the rows that contains all NaN values, so we will pass following arguments in it,

# Drop rows which contain all NaN values df = df.dropna(axis=0, how='all')

**axis=0 :**Drop rows which contain NaN or missing value.**how=’all’**: If all values are NaN, then drop those rows (because axis==0).

It returned a dataframe after deleting the rows with all NaN values and then we assigned that dataframe to the same variable.

**Checkout complete example as follows,**

import pandas as pd import numpy as np # List of Tuples empoyees = [('Jack', 34, 'Sydney', 5) , ('Riti', 31, 'Delhi' , np.NaN) , (np.NaN, np.NaN, np.NaN , np.NaN), ('Aadi', 16, 'London', 11) , ('Mark', np.NaN,'Delhi' , 12), (np.NaN, np.NaN, np.NaN , np.NaN)] # Create a DataFrame object df = pd.DataFrame( empoyees) print("Contents of the Dataframe : ") print(df) # Drop rows which contain all NaN values df = df.dropna( axis=0, how='all') print("Modified Dataframe : ") print(df)

**Output:**

Contents of the Dataframe : 0 1 2 3 0 Jack 34.0 Sydney 5.0 1 Riti 31.0 Delhi NaN 2 NaN NaN NaN NaN 3 Aadi 16.0 London 11.0 4 Mark NaN Delhi 12.0 5 NaN NaN NaN NaN Modified Dataframe : 0 1 2 3 0 Jack 34.0 Sydney 5.0 1 Riti 31.0 Delhi NaN 3 Aadi 16.0 London 11.0 4 Mark NaN Delhi 12.0

It deleted rows with index 2 and 5 of dataframe, because they had all NaN values.