当to_replace包含nan时,为什么pandas Series.replace会更改数据类型?

时间:2019-03-27 17:48:23

标签: python python-3.x pandas

添加{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无关,并且是固定的)

0 个答案:

没有答案