Проверка наличия значения в серии Pandas с помощью «в»

#python #pandas

Вопрос:

Я пытаюсь проверить, существует ли значение в серии панд, однако я обнаружил интересный факт:

 s1 = pd.Series(['one', 'one1', '1', ''])
'one' in s1
False

'one' in set(s1)
True
 

Почему in операция не будет работать для объекта серии? Спасибо!

Комментарии:

1. Почему это необходимо для реализации серии in ? Это более или менее оболочка, вокруг np.ndarray которой реализуется in , поэтому просто используйте values атрибут объекта серии.

2. Используется s.values для проверки наличия строк.

3. @павел, Спасибо. Мне было просто любопытно, так как я думал, что это будет реализовано по какой-то причине.

Ответ №1:

in проверяет, находится ли индекс в этой серии

 In[29]: s1.__contains__
Out[29]: 
<bound method NDFrame.__contains__ of 
0     one
1    one1
2       1
3        
dtype: object>

In[30]: 'one' in s1
Out[30]: False

In[31]: 0 in s1
Out[31]: True

In[32]: 1 in s1
Out[32]: True

In[33]: 2 in s1
Out[33]: True

In[34]: 3 in s1
Out[34]: True

In[35]: 4 in s1
Out[35]: False