df.fillna(0)命令不会将NaN值替换为0

BKS*_*BKS 3 nan dataframe python-2.7 pandas

我正在尝试将下面代码中生成的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
Run Code Online (Sandbox Code Playgroud)

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  
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 5

您需要分配以下结果fillna:

df_pubs = df_pubs.fillna(0)
Run Code Online (Sandbox Code Playgroud)

或传递参数inplace=True:

df_pubs.fillna(0, inplace=True)
Run Code Online (Sandbox Code Playgroud)

查看文档

您可以将代码修改为:

df_pubs = df_pubs.pivot(index='Conference', columns='Year', values='totalPubs').fillna(0)
Run Code Online (Sandbox Code Playgroud)

哪个会起作用但是fillna这里是否可读是有争议的.