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