在Pandas DataFrame中,将无效值替换为None。

26 浏览
0 Comments

在Pandas DataFrame中,将无效值替换为None。

在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   - //这个没有被替换
1   3
2   2
3   5
4   1
5  -5
6  -1
7  -1 //这个改为了`-1`...
8   9

为什么会返回这样奇怪的结果?

因为我想将这个数据框导入MySQL数据库,所以我不能在数据框的任何元素中放入NaN值,而是想放入None。当然,你可以先将'-'更改为NaN,然后再将NaN转换为None,但我想知道为什么数据框会以这种可怕的方式行动。

在OS X 10.8上测试了Python 2.7上的pandas 0.12.0 dev版本。Python是OS X上的预装版本,我使用SciPy Superpack脚本安装了pandas,供你参考。

0