Python 如果为False,则不在布尔值系列中

Python 如果为False,则不在布尔值系列中,python,pandas,if-statement,boolean,logic,Python,Pandas,If Statement,Boolean,Logic,我是python新手,我发现我的许多问题已经得到了回答。在编写各种语言的7年时间里,我从来没有在这里发布过问题,所以这次我真的被难住了 我正在使用python 3.6 我有一个数据框,其中的一列只是布尔值。我有一些代码,我只想在该列中的所有行都为True时执行 在我的代码的其他地方,我使用了: if True not in df.column: 确定df中是否有一行为真。这个很好用 但由于某些原因,相反的方法不起作用: if False not in df.column: 确定df中的所有行

我是python新手,我发现我的许多问题已经得到了回答。在编写各种语言的7年时间里,我从来没有在这里发布过问题,所以这次我真的被难住了

我正在使用python 3.6

我有一个数据框,其中的一列只是布尔值。我有一些代码,我只想在该列中的所有行都为True时执行

在我的代码的其他地方,我使用了:

if True not in df.column:
确定df中是否有一行为真。这个很好用

但由于某些原因,相反的方法不起作用:

if False not in df.column:
确定df中的所有行是否为真

即使这样也会返回False:

import pandas as pd

S = pd.Series([True, True, True])

print(False not in S)
但我发现向该系列添加.values有两种效果:

import pandas as pd

S = pd.Series([True, True, True])

print(False not in S.values)
我可以想到的另一种选择是循环遍历列,并使用OR运算符将每一行与初始化为True的变量进行比较。然后,如果变量使它一直到最后都为True,则所有都必须为True

所以我的问题是:为什么这个返回值是假的

import pandas as pd

S = pd.Series([True, True, True])

print(False not in S)

False不在S中
相当于
False不在S.index中
。由于第一个索引元素是0(反过来,它在数字上相当于
False
),因此
False
在技术上是
S
中不是S
相当于
在S中不是False。由于第一个索引元素是0(这反过来在数值上相当于
False
),
False
在技术上是
S
中,当您调用
S.values
时,您将有权访问pandas系列/数据帧的
numpy.array
版本


Pandas提供了一个名为
isin
的方法,当调用
s.isin([False])
时,该方法将正常运行。当您调用
s.values
时,您将访问Pandas Series/Dataframe的
numpy.array
版本


Pandas提供了一个名为
isin
的方法,在调用
s.isin([False])

时,该方法将正常运行。这不是您直接要求的,而是您可以对布尔序列使用.all()来确定所有值是否为真。比如:

if df["column_name"].all():
    #do something

这并不是直接要求什么,但可以对布尔级数使用.all()来确定所有值是否为真。比如:

if df["column_name"].all():
    #do something

我相信DYZ为你的问题提供了答案,GabrielA为你试图实现的目标提供了解决方案。我相信DYZ为你的问题提供了答案,GabrielA为你试图实现的目标提供了解决方案。这对DYZ非常有帮助!非常感谢。这很有帮助,戴兹!非常感谢。谢谢rickyalbert,这也很有帮助!谢谢,不幸的是,我不知道你的主要问题的答案,但我想提供我知道的所有信息:)谢谢rickyalbert,这也很有帮助!谢谢,很遗憾,我不知道你的主要问题的答案,但我想提供我知道的所有信息:)