有没有什么方法可以替换值None
在 Python 中的 Pandas 中?
您可以使用df.replace('pre', 'post')
并且可以将一个值替换为另一个值,但是如果您想替换为None
值,如果你尝试,你会得到一个奇怪的结果。
这是一个例子:
df = DataFrame(['-',3,2,5,1,-5,-1,'-',9])
df.replace('-', 0)
返回成功的结果。
But,
df.replace('-', None)
返回以下结果:
0
0 - // this isn't replaced
1 3
2 2
3 5
4 1
5 -5
6 -1
7 -1 // this is changed to `-1`...
8 9
为什么会返回这么奇怪的结果呢?
因为我想把这个数据框倒入MySQL数据库,所以我不能把NaN
值到我的数据框中的任何元素中,而不是想要放入None
。当然,你可以先改变'-'
to NaN
然后转换NaN
to None
,但我想知道为什么数据框的行为如此糟糕。
在 Python 2.7 和 OS X 10.8 上的 pandas 0.12.0 dev 上进行了测试。 Python 是一个
OS X 上的预安装版本,我使用 SciPy 安装了 pandas
Superpack 脚本,供您参考。
实际上,在 pandas 的更高版本中,这会给出 TypeError:
df.replace('-', None)
TypeError: If "to_replace" and "value" are both None then regex must be a mapping
您可以通过传递列表或字典来做到这一点:
In [11]: df.replace('-', df.replace(['-'], [None]) # or .replace('-', {0: None})
Out[11]:
0
0 None
1 3
2 2
3 5
4 1
5 -5
6 -1
7 None
8 9
但我建议使用 NaN 而不是 None:
In [12]: df.replace('-', np.nan)
Out[12]:
0
0 NaN
1 3
2 2
3 5
4 1
5 -5
6 -1
7 NaN
8 9
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)