'finding values in pandas series - Python3

i have this excruciatingly annoying problem (i'm quite new to python)

df=pd.DataFrame[{'col1':['1','2','3','4']}]

col1=df['col1']

Why does col1[1] in col1 return False?



Solution 1:[1]

For check values use boolean indexing:

#get value where index is 1
print (col1[1])
2 
#more common with loc
print (col1.loc[1])
2

print (col1 == '2')
0    False
1     True
2    False
3    False
Name: col1, dtype: bool

And if need get rows:

print (col1[col1 == '2'])
1    2
Name: col1, dtype: object

For check multiple values with or:

print (col1.isin(['2', '4']))
0    False
1     True
2    False
3     True
Name: col1, dtype: bool 

print (col1[col1.isin(['2', '4'])])
1    2
3    4
Name: col1, dtype: object

And something about in for testing membership docs:

Using the Python in operator on a Series tests for membership in the index, not membership among the values.

If this behavior is surprising, keep in mind that using in on a Python dictionary tests keys, not values, and Series are dict-like. To test for membership in the values, use the method isin():

For DataFrames, likewise, in applies to the column axis, testing for membership in the list of column names.

#1 is in index
print (1 in col1)
True

#5 is not in index
print (5 in col1)
False

#string 2 is not in index
print ('2' in col1)
False

#number 2 is in index
print (2 in col1)
True

You try to find string 2 in index values:

print (col1[1])
2

print (type(col1[1]))
<class 'str'>

print (col1[1] in col1)
False

Solution 2:[2]

I might be missing something, and this is years later, but as I read the question, you are trying to get the in keyword to work on your panda series? So probably want to do:

col1[1] in col1.values 

Because as mentioned above, pandas is looking through the index, and you need to specifically ask it to look at the values of the series, not the index.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community
Solution 2 Daniel81