df.column中XXX的重点是什么?

时间:2016-12-05 13:28:36

标签: python pandas

我们想说我想知道我的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评估的内容是什么?

1 个答案:

答案 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