I wanted to know, if I have missed values in my Series or DataFrame, but I found, that I can't just use True
in series. Why it does't work?
I've done it by using series.isna().sum() != 0
, but this problem is interesting for me.
mass = [True,False]
print(True in mass) #return True
mass = pd.Series([True,False])
print(True in mass) #return False
mass = pd.DataFrame([True,False])
print(True in mass) #return False
1条答案
按热度按时间ut6juiuv1#
Python中的
in
运算符检查一个值是否存在于列表或其他序列中。当你在一个值的列表或数组上使用in
运算符时,如果该值存在于列表中,它将返回True
,否则返回False
。然而,当你在Pandas Series或DataFrame上使用in
运算符时,如果值出现在Series或DataFrame的索引中,而不是值本身中,则它将只返回True
。例如,在您的代码中,
mass
变量是一个值列表[True
,False
],因此当您在此列表上使用in
运算符时,它将返回True
,因为值True
存在于列表中。但是,当您将列表转换为Pandas Series或DataFrame时,in
运算符将只检查Series或DataFrame的索引,默认情况下,该索引是一个整数范围。由于值True
不在Series或DataFrame的索引中,in运算符将返回False
。如果要检查Pandas Series或DataFrame的值中是否存在某个值,可以使用
isin
方法。此方法将返回一个布尔数组,指示Series或DataFrame中的哪些值等于要检查的值。例如:在此程式码中,
isin
方法是用来检查值True
是否存在于mass
序列中。它会传回布林值数组,指出序列中的第一个值是True
,第二个值是False
。您也可以使用
notnull
方法来检查Pandas Series或DataFrame中是否遗漏任何值。这个方法会传回布林值数组,指出哪些值没有遗漏(也就是不是None
或NaN
)。例如:在此代码中,
notnull
方法用于检查mass Series中是否缺少任何值。它返回一个布尔数组,表示Series中的第一个值没有缺少,但缺少第二个值。总之,
in
运算符在用于Pandas Series或DataFrame时不会按预期工作,因为它只检查Series或DataFrame的索引,而不检查值。若要检查Series或DataFrame的值中是否存在值,可以使用isin
方法。若要检查Series或DataFrame中是否缺少任何值,您可以使用notnull
方法。