w3resource

Pandas: Replace all the NaN values with Zero's in a column of a dataframe


32. Replace NaN with Zeros

Write a Pandas program to replace all the NaN values with Zero's in a column of a dataframe.

Sample data:
Original DataFrame
attempts name qualify score
0 1 Anastasia yes 12.5
1 3 Dima no 9.0
2 2 Katherine yes 16.5
3 3 James no NaN
4 2 Emily no 9.0
5 3 Michael yes 20.0
6 1 Matthew yes 14.5
7 1 Laura no NaN
8 2 Kevin no 8.0
9 1 Jonas yes 19.0
New DataFrame replacing all NaN with 0:
attempts name qualify score
0 1 Anastasia yes 12.5
1 3 Dima no 9.0
2 2 Katherine yes 16.5
3 3 James no 0.0
4 2 Emily no 9.0
5 3 Michael yes 20.0
6 1 Matthew yes 14.5
7 1 Laura no 0.0
8 2 Kevin no 8.0
9 1 Jonas yes 19.0

Sample Solution :

Python Code :

import pandas as pd
import numpy as np
exam_data = {'name': ['Anastasia', 'Dima', 'Katherine', 'James', 'Emily', 'Michael', 'Matthew', 'Laura', 'Kevin', 'Jonas'],
        'score': [12.5, 9, 16.5, np.nan, 9, 20, 14.5, np.nan, 8, 19],
        'attempts': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
        'qualify': ['yes', 'no', 'yes', 'no', 'no', 'yes', 'yes', 'no', 'no', 'yes']}
df = pd.DataFrame(exam_data)
print("Original DataFrame")
print(df)
df =  df.fillna(0)
print("\nNew DataFrame replacing all NaN with 0:")
print(df)

Sample Output:

 Original DataFrame
   attempts       name qualify  score
0         1  Anastasia     yes   12.5
1         3       Dima      no    9.0
2         2  Katherine     yes   16.5
3         3      James      no    NaN
4         2      Emily      no    9.0
5         3    Michael     yes   20.0
6         1    Matthew     yes   14.5
7         1      Laura      no    NaN
8         2      Kevin      no    8.0
9         1      Jonas     yes   19.0

New DataFrame replacing all NaN with 0:
   attempts       name qualify  score
0         1  Anastasia     yes   12.5
1         3       Dima      no    9.0
2         2  Katherine     yes   16.5
3         3      James      no    0.0
4         2      Emily      no    9.0
5         3    Michael     yes   20.0
6         1    Matthew     yes   14.5
7         1      Laura      no    0.0
8         2      Kevin      no    8.0
9         1      Jonas     yes   19.0                

Explanation:

The above code creates a Pandas DataFrame called ‘df’ from a dictionary called ‘exam_data’ that contains information about students and their exam scores. Some of the students have missing scores, which are represented as np.nan values.

df = df.fillna(0): The fillna() method is then used to fill in these missing values with 0.

Finally the resulting DataFrame is printed to the console using print() function.


For more Practice: Solve these Related Problems:

  • Write a Pandas program to replace NaN values with zeros in a specified column and then check data types remain unchanged.
  • Write a Pandas program to fill NaN values with zero across multiple columns using the fillna() method.
  • Write a Pandas program to update a DataFrame column by replacing all NaN entries with zero and then plot a histogram of the column.
  • Write a Pandas program to conditionally replace NaN values with zero only if the column's mean is below a threshold.

Go to:


Previous: Write a Pandas program to select a row of series/dataframe by given integer index.
Next: Write a Pandas program to convert index in a column of the given dataframe.

Python-Pandas Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.