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
的值
当我使用
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