我正在尝试将下面代码中生成的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在这里是否可读还值得商bat。

10-04 20:50