为什么`pandas.Series中的False([True,True])`返回True?

时间:2017-03-08 23:50:11

标签: python pandas

False in [True,True]

False in pd.Series([True,True])

第一行代码返回False 第二行代码返回True!

我认为我必须做错事或遗漏某些事情。当我检查系列是否有0时,我得到同样的事情。有人可以向我解释这个吗?

3 个答案:

答案 0 :(得分:8)

您正在检查系列的索引 - @Uriel has shown a docstring explaining why is it happening中是否0(内部False表示):

In [286]: False in pd.Series([True,True])
Out[286]: True

与:

相同
In [287]: 0 in pd.Series([True,True])
Out[287]: True

In [288]: True in pd.Series([True,True])
Out[288]: True

与:

相同
In [290]: 1 in pd.Series([True,True])
Out[290]: True

In [291]: 2 in pd.Series([True,True])
Out[291]: False

因为本系列中没有这样的索引:

In [292]: pd.Series([True,True])
Out[292]:
0    True
1    True
dtype: bool

<强>更新

如果要检查至少一个系列元素是False还是True:

In [296]: (pd.Series([True, True]) == False).any()
Out[296]: False

In [297]: (pd.Series([True, True]) == True).any()
Out[297]: True

答案 1 :(得分:2)

>>> help(pd.Series([True, True]).__contains__)
Help on method __contains__ in module pandas.core.generic:

__contains__(key) method of pandas.core.series.Series instance
    True if the key is in the info axis

>>> pd.Series([True, True])
0    True
1    True
dtype: bool

^
info axis

答案 2 :(得分:0)

如果您要检查多个值,我强烈推荐isin method

>>> pd.Series(range(10)).isin([1]).any()
True