我想用"缺少值"替换我的df的一列中的缺失值。 我试过了
result['emp_title'].fillna('missing')
或
result['emp_title'] = result['emp_title'].replace({ np.nan:'missing'})
第二个工作,因为当我在此代码后计算缺失值时:
result['emp_title'].isnull().sum()
它给了我0。
但是,第一个不能像我预期的那样工作,它没有给我一个0,而不是之前的缺失值计数。
为什么第一个不起作用?谢谢!
答案 0 :(得分:1)
您需要填写或分配:
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