#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