pandas != 'a value' return 是否为 NaN?

Does pandas != 'a value' return NaNs?

当我使用 x['test'] = df['a_variable'].str.contains('some string') 我得到-

True
NaN
NaN
True
NaN

如果我用 x[x['test'] != True] 我应该收到值为 NaN 的行吗?

谢谢。

是的,这是预期的行为:

In [3]:
df = pd.DataFrame({'some_string':['asdsa','some',np.NaN, 'string']})
df

Out[3]:
  some_string
0       asdsa
1        some
2         NaN
3      string

In [4]:
df['some_string'].str.contains('some')

Out[4]:
0    False
1     True
2      NaN
3    False
Name: some_string, dtype: object

使用上面的作为掩码:

In [13]:
df[df['some_string'].str.contains('some') != False]

Out[13]:
  some_string
1        some
2         NaN

所以以上是预期的行为。

如果您使用 na=value 指定 NaN 值的值,那么您可以获得您设置为返回值的任何值:

In [6]:
df['some_string'].str.contains('some', na=False)

Out[6]:
0    False
1     True
2    False
3    False
Name: some_string, dtype: bool

以上变得重要,因为使用 NaN 值进行索引将导致 KeyError

是的,我们希望它会发生

ex.)

x=pd.DataFrame([True,NaN,True,NaN])
print x

    0
0   True
1   NaN
2   True
3   NaN

print x[x[0] != True]

    0
1   NaN
3   NaN

x[x[0] != True] 会 return 每一个值不是 True

的东西

Like wise

print x[x[0] != False]

    0
0   True
1   NaN
2   True
3   NaN

因为等式表示 return 所有不是 False

的值