python-3.x 为什么(True in pd.Series([True,False]))返回False?

r1zhe5dt  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(228)

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
ut6juiuv

ut6juiuv1#

Python中的in运算符检查一个值是否存在于列表或其他序列中。当你在一个值的列表或数组上使用in运算符时,如果该值存在于列表中,它将返回True,否则返回False。然而,当你在Pandas Series或DataFrame上使用in运算符时,如果值出现在Series或DataFrame的索引中,而不是值本身中,则它将只返回True
例如,在您的代码中,mass变量是一个值列表[ TrueFalse ],因此当您在此列表上使用in运算符时,它将返回True,因为值True存在于列表中。但是,当您将列表转换为Pandas Series或DataFrame时,in运算符将只检查Series或DataFrame的索引,默认情况下,该索引是一个整数范围。由于值True不在Series或DataFrame的索引中,in运算符将返回False
如果要检查Pandas Series或DataFrame的值中是否存在某个值,可以使用isin方法。此方法将返回一个布尔数组,指示Series或DataFrame中的哪些值等于要检查的值。例如:

mass = pd.Series([True, False])
print(mass.isin([True]))  # Output: [True, False]

在此程式码中,isin方法是用来检查值True是否存在于mass序列中。它会传回布林值数组,指出序列中的第一个值是True,第二个值是False
您也可以使用notnull方法来检查Pandas Series或DataFrame中是否遗漏任何值。这个方法会传回布林值数组,指出哪些值没有遗漏(也就是不是NoneNaN)。例如:

mass = pd.Series([True, None])
print(mass.notnull())  # Output: [True, False]

在此代码中,notnull方法用于检查mass Series中是否缺少任何值。它返回一个布尔数组,表示Series中的第一个值没有缺少,但缺少第二个值。
总之,in运算符在用于Pandas Series或DataFrame时不会按预期工作,因为它只检查Series或DataFrame的索引,而不检查值。若要检查Series或DataFrame的值中是否存在值,可以使用isin方法。若要检查Series或DataFrame中是否缺少任何值,您可以使用notnull方法。

相关问题