我想用“缺失值”替换我df的一列中的缺失值。
我试过了

result['emp_title'].fillna('missing')


要么

result['emp_title'] = result['emp_title'].replace({ np.nan:'missing'})


第二个有效,因为当我在此代码后计算缺失值时:

result['emp_title'].isnull().sum()


它给了我0。
但是,第一个没有按我预期的那样工作,没有给我0,而不是以前的缺失值计数。
为什么第一个不起作用?谢谢!

最佳答案

您需要填写或分配:

result['emp_title'].fillna('missing', inplace=True)


要么

result['emp_title'] = result['emp_title'].fillna('missing')




MVCE:

In [1697]: df = pd.DataFrame({'Col1' : [1, 2, 3, np.nan, 4, 5, np.nan]})

In [1702]: df.fillna('missing'); df # changes not seen in the original
Out[1702]:
   Col1
0   1.0
1   2.0
2   3.0
3   NaN
4   4.0
5   5.0
6   NaN

In [1703]: df.fillna('missing', inplace=True); df
Out[1703]:
      Col1
0        1
1        2
2        3
3  missing
4        4
5        5
6  missing


您应该意识到,如果要对切片应用fillna,请不要使用inplace=True,而应使用df.loc/iloc并分配给子切片:

In [1707]: df.Col1.iloc[:5].fillna('missing', inplace=True); df # doesn't work
Out[1707]:
   Col1
0   1.0
1   2.0
2   3.0
3   NaN
4   4.0
5   5.0
6   NaN

In [1709]: df.Col1.iloc[:5] = df.Col1.iloc[:5].fillna('missing')

In [1710]: df
Out[1710]:
      Col1
0        1
1        2
2        3
3  missing
4        4
5        5
6      NaN

07-26 09:38
查看更多