我们想说我想知道我的pd.Dataframe
列中是否有号码。
我做:
999 in test.ind
Out[29]:
True
然而,鉴于
,这很奇怪test.ind.max()
Out[28]:
932
实际上,
(999 == test.ind).sum()
Out[30]:
0
该列的类型为dtype('int64')
。现在,显然x in series
表达式并不像我预期的那样有效。但是,还有其他一些观点吗?
xx in pd.Series
评估的内容是什么?
答案 0 :(得分:4)
它评估999是否在你的系列索引中,__contains__ operator
是在你为索引中的值调用in
测试时调用的,而不是值是否在值中,为此,您可以使用isin
或==
:
In [6]:
s = pd.Series(np.arange(5), index=list('abcde'))
s
Out[6]:
a 0
b 1
c 2
d 3
e 4
dtype: int32
In [7]:
'c' in s
Out[7]:
True
In [8]:
s.isin([2])
Out[8]:
a False
b False
c True
d False
e False
dtype: bool
它的实现方式如下:
def __contains__(self, item):
return item in self.items
请参阅:https://github.com/pandas-dev/pandas/blob/master/pandas/core/internals.py#L3358
和docs
感谢@chrisb