大熊猫没有正确设置列

时间:2014-04-26 19:34:31

标签: python numpy pandas scipy

我在python中有以下程序

# input
import pandas as pd
import numpy as np
data = pd.DataFrame({'a':pd.Series([1.,2.,3.]), 'b':pd.Series([4.,np.nan,6.])})

此处data为:

In: print data

   a   b
0  1   4
1  2 NaN
2  3   6

现在我想要一个isnull列,指明该行是否有nan

# create data
data['isnull'] = np.zeros(len(data))
data['isnull'][pd.isnull(data).any(axis=1)] = 1

输出不正确(第二个应该是1):

In: print data

   a   b  isnull
0  1   4       0
1  2 NaN       0
2  3   6       0

但是,如果我再次执行确切命令,输出将是正确的:

data['isnull'][pd.isnull(data).any(axis=1)] = 1
print data

   a   b  isnull
0  1   4       0
1  2 NaN       1
2  3   6       0

这是大熊猫的错误​​还是我错过了一些明显的东西?

我的python版本是2.7.6。大熊猫是0.12.0。 numpy是1.8.0

1 个答案:

答案 0 :(得分:1)

您的链索引在pandas中没有给出可靠的结果。我会做以下事情:

data['isnull'] =  pd.isnull(data).any(axis=1).astype(int)
print data

   a   b  isnull
0  1   4       0
1  2 NaN       1
2  3   6       0

有关链式索引问题的更多信息,请参见此处:

http://pandas-docs.github.io/pandas-docs-travis/indexing.html#indexing-view-versus-copy

相关问题