Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

df.fillna(0) command won't replace NaN values with 0

I'm trying to replace the NaN values generated in the code below to 0. I don't understand what the below won't work. It still keeps the NaN values.

df_pubs=pd.read_sql("select Conference, Year, count(*) as totalPubs from publications where year>=1991 group by conference, year", db)

df_pubs['Conference'] = df_pubs['Conference'].str.encode('utf-8')

df_pubs = df_pubs.pivot(index='Conference', columns='Year', values='totalPubs')
df_pubs.fillna(0)

print df_pubs

print df produces this:

Year                                                                                       1991  \
Conference                                                                                        
                                                                                            223   
10th Anniversary Colloquium of UNU/IIST                                                     NaN   
15. WLP                                                                                     NaN   
1999 ACM SIGMOD Workshop on Research Issues in Data Mining and Knowledge Discovery          NaN   
25 Years CSP                                                                                NaN  
like image 729
BKS Avatar asked Mar 16 '23 01:03

BKS


1 Answers

You need to assign the result of fillna:

df_pubs = df_pubs.fillna(0)

or pass param inplace=True:

df_pubs.fillna(0, inplace=True)

See the docs

You could modify your code to this:

df_pubs = df_pubs.pivot(index='Conference', columns='Year', values='totalPubs').fillna(0)

which would work but it's debatable whether the fillna is readable here.

like image 87
EdChum Avatar answered Mar 25 '23 04:03

EdChum