Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查同时包含字符串和整数的系列中的值时的混乱行为_Python_Pandas - Fatal编程技术网

Python 检查同时包含字符串和整数的系列中的值时的混乱行为

Python 检查同时包含字符串和整数的系列中的值时的混乱行为,python,pandas,Python,Pandas,我有一系列包含数字和字符的dtype:object。当我想检查序列中是否存在某个值时,我对如何检查某个值的存在感到困惑 对于下面的例子,我直觉地认为,'a'在系列中,也在'1'中。此外,我不希望序列中存在(整型)值1,因为熊猫中的dtype:object可以(大致?)与python的字符串类型相比较 有人对这种行为有解释吗 s = pd.Series(['a',1,2]) if 'a' in s: print('a is in s') else: print('a is n

我有一系列包含数字和字符的
dtype:object
。当我想检查序列中是否存在某个值时,我对如何检查某个值的存在感到困惑

对于下面的例子,我直觉地认为,
'a'
在系列中,也在
'1'
中。此外,我不希望序列中存在(整型)值
1
,因为熊猫中的
dtype:object
可以(大致?)与python的字符串类型相比较

有人对这种行为有解释吗

s = pd.Series(['a',1,2])

if 'a' in  s: 
    print('a is in s')
else:
    print('a is not in s')
if '1' in s:
    print('string 1 is in s')
else: 
    print('string 1 is not in s')
if 1 in s:
    print('integer 1 is in s')
else:
    print('integer 1 is not in s')
输出:

a is not in s
string 1 is not in s
integer 1 is in s

当您在s中查询
1时,实际上是在询问它是否在
s.index
中。请注意,s中的
0也将为真

如果用以下方式定义s-
s=pd.Series(['a',1,2],index=['a',b',c'])

然后-

s#False中的
1

s#True中的a


有趣的是,如果你在s.values
中做了
a,它会给出
True
,但对于s.values中的
'1',它会给出
False
,这就解决了问题。我发现这种行为非常违反直觉,但这当然是主观的,有待讨论。如果是另一种方式,对我来说会更有意义,因此如果我在s中键入
x
,默认情况下应该检查s.values中的
x
,而不是s.index中的
x