将 nan 转换为 NaN 有多大用处?

How useful it is to convert nan to NaN?

我正在尝试 运行 已经由其他人编写的代码。但是,我不确定将 nan 转换为 NaN

需要什么

关于这个问题的一段代码行

obs['valuestring'].astype(str).str.strip().mask(obs['valuestring'].isna())

上面的行代码给出了这样的输出

不过我感觉下面这段代码应该没问题。不是吗?

obs['valuestring'].astype(str).str.strip()

并且它产生与上面相同的输出但是 nan 而不是 NaN

我知道 np.nannp.NaN,所以尝试学习这个有什么用处吗?我错过了吗?

你能帮我理解将 nan 转换为 NaN 的必要性吗?我应该何时进行此类转换?

这是不同的,因为第二个没有缺失值,但是 NaN 的字符串表示 - 字符串 nan:

obs = pd.DataFrame({'valuestring':['a ', np.nan, np.nan]})
print (obs)
  valuestring
0          a 
1         NaN
2         NaN

s = obs['valuestring'].astype(str).str.strip().mask(obs['valuestring'].isna())
print (s)
0      a
1    NaN
2    NaN
Name: valuestring, dtype: object

print (s.isna())
0    False
1     True
2     True
Name: valuestring, dtype: bool

s = obs['valuestring'].astype(str).str.strip()
print (s)
0      a
1    nan
2    nan
Name: valuestring, dtype: object

print (s.isna())
0    False
1    False
2    False
Name: valuestring, dtype: bool

print (s.eq('nan'))
0    False
1     True
2     True
Name: valuestring, dtype: bool