15

I have dictionary and created Pandas using cars = pd.DataFrame.from_dict(cars_dict, orient='index') and sorted the index (columns in alphabetical order
cars = cars.sort_index(axis=1) After sorting I noticed the DataFrame has NaN and I wasn't sure if the really np.nan values? print(cars.isnull().any()) and all column shows false.

I have tried different method to convert those "NaN" values to zero which is what I want to do but non of them is working. I have tried replace and fillna methods and nothing works Below is sample of my dataframe..

            speedtest          size 
toyota       65                NaN 
honda        77                800 
3
  • 4
    df[np.isnan(df)] = 0 Commented Feb 23, 2018 at 21:58
  • 2
    df=df.fillna(0) if not work try df=df.replace('NaN',0) Commented Feb 23, 2018 at 21:59
  • 1
    I just went for the df.replace('NaN', 0) that worked fine. thanks. Commented Feb 23, 2018 at 22:07

3 Answers 3

32

Either use replace or np.where on the values if they are strings:

df = df.replace('NaN', 0)

Or,

df[:] = np.where(df.eq('NaN'), 0, df)

Or, if they're actually NaNs (which, it seems is unlikely), then use fillna:

df.fillna(0, inplace=True)

Or, to handle both situations at the same time, use apply + pd.to_numeric (slightly slower but guaranteed to work in any case):

df = df.apply(pd.to_numeric, errors='coerce').fillna(0, downcast='infer')

Thanks to piRSquared for this one!

Sign up to request clarification or add additional context in comments.

1 Comment

Generalized: df.apply(to_numeric, errors='coerce').fillna(0, downcast='infer')
3

@cs95's answer didn't work here.

Had to import numpy as np and use replace with np.Nan and inplace = True

import numpy as np

df.replace(np.NaN, 0, inplace=True)

Then all the columns got 0 instead of NaN.

Comments

1

Don't use inplace=True and try this instead:

df.fillna(0)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.