我在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
答案 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