在Python的Pandas中,是否有任何方法可以用None替换值?
您可以使用df.replace('pre', 'post')并将其替换为另一个值,但是如果要替换为None值则无法执行此操作,如果尝试这样做,则会得到奇怪的结果。
所以这是一个例子:
df = DataFrame(['-',3,2,5,1,-5,-1,'-',9])
df.replace('-', 0)
返回成功的结果。
但,
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。 当然,您可以先将'-'更改为NaN,然后将NaN转换为None,但是我想知道为什么数据帧以这种可怕的方式起作用。
Tested on pandas 0.12.0 dev on Python 2.7 and OS X 10.8. Python is a
pre-installed version on OS X and I installed pandas by using SciPy
Superpack script, for your information.
write_frame是否不将NaN s解析为none s?
对。 您遇到InternalError: (1054, u"Unknown column nan in field list")错误。 除了执行write_frame方法之前将NaN转换为none之外,我不知道其他解决方案。
您使用的是哪个版本的熊猫?
Scipy Super Pack发布了dev? 好的,我绝对认为您应该在github上将此问题提出来,不应太难解决。
如果要从CSV / Excel读取此数据,则可以使用na_values参数以NaN的形式读取这些值。 此答案中的更多信息。
实际上,在更高版本的熊猫中,