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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With