3
这可能很基本,但为什么看起来像in
不适用于包含对象或字符串的Series
?为什么在系列包含字符串时不能`in`搜索值
>>> import pandas as pd
>>> s = pd.Series(['a', 'b', 'c'])
>>> 'a' in s
False
>>> 'a' in s.astype('S1')
False
的Series.__contains__
文档是相当稀少:
[In 1]: s.__contains__?
Signature: s.__contains__(key)
Docstring: True if the key is in the info axis
File: c:\...\lib\site-packages\pandas\core\generic.py
Type: method
我的第一个念头是in
只检查了 “指标”:
>>> 1 in s
True
但后来:为什么它(似乎)使用其他类型:
>>> 1.2 in pd.Series([1.3, 1.2])
True
>>> 1 in pd.Series([1.3, 1.2]) # also works for index
True
我对工作解决方案不感兴趣。我知道我可以简单地使用whatever in s.values
或np.any(s.eq(whatever))
。我想知道为什么它的行为方式(或者我错过了什么?)。