Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Replace na in output with zeroes in pandas python

I wanted to replace the ‘na’ value in the output with 0.0. Those are not NaN values. It had ‘na’ value in the csv file.
I tried every method I thought I could to replace na with 0.0 but to no avail.
Here is the output:

            Brunei Darussalam   Indonesia   Malaysia   Philippines   Thailand   Viet Nam   Myanmar   Japan   ...  Austria   Scandinavia   CIS & Eastern Europe     USA   Canada   Australia   New Zealand   Africa
                                                                                                             ...

 1978 Jan                  na          na         na            na         na         na        na   18,652  ...       na          1,881                    433   8,362    1,328      28,421         3,612      
587
 1978 Feb                  na          na         na            na         na         na        na   20,394  ...       na          2,112                    514   8,251    1,434      13,982         2,521      
354
 1978 Mar                  na          na         na            na         na         na        na   20,136  ...       na          2,183                    472   9,901    1,662      16,536         2,727      
405
 1978 Apr                  na          na         na            na         na         na        na   13,508  ...       na          1,590                    405  11,782    1,586      16,499         3,197      
736
 1978 May                  na          na         na            na         na         na        na   14,472  ...       na          1,245                    431  13,448    2,025      20,690         5,130      
514

What the output is supposed to look like:

            Brunei Darussalam   Indonesia   Malaysia   Philippines   Thailand   Vietnam   Myanmar   Japan   ...  Austria   Scand0.0via   CIS & Eastern Europe     USA   Canada   Australia   New Zealand   Africa
                                                                                                             ...

 1978 Jan                 0.0         0.0        0.0           0.0        0.0        0.0       0.0   18,652  ...      0.0          1,881                    433   8,362    1,328      28,421         3,612      
587
 1978 Feb                 0.0         0.0        0.0           0.0        0.0        0.0       0.0   20,394  ...      0.0          2,112                    514   8,251    1,434      13,982         2,521      
354
 1978 Mar                 0.0         0.0        0.0           0.0        0.0        0.0       0.0   20,136  ...      0.0          2,183                    472   9,901    1,662      16,536         2,727      
405
 1978 Apr                 0.0         0.0        0.0           0.0        0.0        0.0       0.0   13,508  ...      0.0          1,590                    405  11,782    1,586      16,499         3,197      
736
 1978 May                 0.0         0.0        0.0           0.0        0.0        0.0       0.0   14,472  ...      0.0          1,245                    431  13,448    2,025      20,690         5,130      
514

I tried converting with fillna, but it did not work. I even tried numpy to convert it to zeroes, but it did not work. Here is my code below

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

import pandas as pd
import numpy as np

df = pd.read_csv('Int_Monthly_Visitor.csv', header=0, index_col=0, na_values=0.0)

print(df.head(5).replace(np.nan, 0.0))

So far I was not able to make it work. I can give the CSV file if needed.

>Solution :

Since you are reading CSV file, you can directly pass na to na_values parameter of read_csv function (currently you are passing 0.0), then you can call fillna(0) either for entire dataframe, or for the columns of your choice:

pd.read_csv('Int_Monthly_Visitor.csv', header=0, index_col=0, na_values=['na']).fillna(0)

  Brunei Darussalam  Indonesia  Malaysia  ...  Australia  New Zealand  Africa
0          1978 Jan        0.0       0.0  ...      1,328       28,421   3,612
1          1978 Feb        0.0       0.0  ...      1,434       13,982   2,521
2          1978 Mar        0.0       0.0  ...      1,662       16,536   2,727
3          1978 Apr        0.0       0.0  ...      1,586       16,499   3,197
4          1978 May        0.0       0.0  ...      2,025       20,690   5,130
[5 rows x 16 columns]
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading