鉴于这种 -
import pandas as pd
s = pd.Series(['', '1', '2', '', '4', '', '6'])
为什么这个 -
s.replace('', None).values
结果如下 -
array(['', '1', '2', '2', '4', '4', '6'], dtype=object)
当我期待这个 -
array([None, '1', '2', None, '4', None, '6'], dtype=object)
使用None是有问题的.如果为参数传递None,它将使用默认值(docs):
没有
types.NoneType的唯一值.None通常用于表示缺少值,因为默认参数未传递给函数.
所以s.replace('', None)是一样的s.replace('').显然,没有传递值时的默认操作是转发填充系列.相反,你可以使用np.nan:
pd.Series(['', '1', '2', '', '4', '', '6']).replace('', np.nan)
Out:
0 NaN
1 1
2 2
3 NaN
4 4
5 NaN
6 6
dtype: object
Run Code Online (Sandbox Code Playgroud)
或通过一个字典:
s.replace({'': None})
Out:
0 None
1 1
2 2
3 None
4 4
5 None
6 6
dtype: object
Run Code Online (Sandbox Code Playgroud)