添加{nan: nan}
会更改Series.replace
中的数据类型吗?如果是的话,具有这种行为的目的是什么?
这是我的期望:
from pandas import Series
from numpy import nan
series = Series(['Y', 'N', 'Unknown', nan])
series.replace({'Y': False, 'N': True, 'Unknown': nan})
0 False
1 True
2 NaN
3 NaN
dtype: object
这是我添加NaN
的“无辜”身份映射后得到的结果:
series.replace({'Y': False, 'N': True, 'Unknown': nan, nan: nan})
0 0.0
1 1.0
2 NaN
3 NaN
dtype: float64
该示例在上下文中看起来很傻-实际上,当修改了映射字典(在代码的其他地方也使用过)时,身份映射是偶然引入的。
背景:我正在清理同时包含NaN和“未知”的DataFrame。由于每一列都是单独考虑的(有时 Unknown 是所需的值!)我没有指示熊猫在数据加载期间将“ Unknown”视为NaN。
相关: Pandas Series.replace on boolean Series(5岁,与NaN无关,并且是固定的)