Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting NaN in dataframe to zero

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 
like image 741
Josef Avatar asked Jan 21 '26 15:01

Josef


1 Answers

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!

like image 99
cs95 Avatar answered Jan 24 '26 05:01

cs95



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!