Команда df.fillna(0) не заменит значения NaN 0
Я пытаюсь заменить значения 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
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
Ответы
Ответ 1
Вам нужно назначить результат 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
.