鉴于此 -
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)
答案 0 :(得分:6)
使用None是有问题的。如果为参数传递None,它将使用默认值(docs):
无
types.NoneType的唯一值。没有人经常使用 表示缺少值,因为默认参数不是 传递给一个函数。
因此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
或传递一个词典:
s.replace({'': None})
Out:
0 None
1 1
2 2
3 None
4 4
5 None
6 6
dtype: object