我正在尝试将以下代码中生成的 NaN 值替换为 0。我不明白以下内容不起作用。它仍然保留 NaN 值。
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
这个: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
最佳答案
您需要分配 fillna
的结果:
df_pubs = df_pubs.fillna(0)
或传递参数
inplace=True
:df_pubs.fillna(0, inplace=True)
见 docs
您可以将代码修改为:
df_pubs = df_pubs.pivot(index='Conference', columns='Year', values='totalPubs').fillna(0)
这会起作用,但是否可以使用
fillna
值得商榷。在这里可读。
关于python-2.7 - df.fillna(0) 命令不会用 0 替换 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30267834/