Skip to content Skip to sidebar Skip to footer

Why Does `False In Pandas.Series([True,True])` Return True?

False in [True,True] False in pd.Series([True,True]) the first line of code returns False the second line of code returns True! I think I must be doing something wrong or missing

Solution 1:

You are checking whether 0 (internal False representation) is in the Series's index - @Uriel has shown a docstring explaining why is it happening:

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

is the same as:

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

and

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

is the same as:

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

but

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

because there is no such index in this series:

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

UPDATE:

if you want to check whether at least one series element is False or True:

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

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

Solution 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

Solution 3:

If you are checking for more than one value, I highly recommend the isin method.

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

Post a Comment for "Why Does `False In Pandas.Series([True,True])` Return True?"