Python 用于切片数据帧的布尔值列表

Python 用于切片数据帧的布尔值列表,python,pandas,boolean,Python,Pandas,Boolean,我正试图找到一种更少人工、更方便的方法,基于多个布尔条件对熊猫数据帧进行切片。为了说明我的目的,这里有一个简化的例子 df = pd.DataFrame({'col1':[True,False,True,False,False,True],'col2':[False,False,True,True,False,False]}) 假设我对数据帧的子集感兴趣,其中“col1”和“col2”都为True。我可以通过运行以下命令找到此选项: df[(df['col1']==True) & (d

我正试图找到一种更少人工、更方便的方法,基于多个布尔条件对熊猫数据帧进行切片。为了说明我的目的,这里有一个简化的例子

df = pd.DataFrame({'col1':[True,False,True,False,False,True],'col2':[False,False,True,True,False,False]})
假设我对数据帧的子集感兴趣,其中“col1”和“col2”都为True。我可以通过运行以下命令找到此选项:

df[(df['col1']==True) & (df['col2']==True)]
在这样一个小维度的示例中,这是可以管理的,但实际的示例最多可以有100列,因此,我宁愿将感兴趣的列读入列表,而不是像上面那样将一个长布尔值串在一起,例如

['col1','col2']

如果需要所有列,请选择列出这些列的位置True

df[df.all(axis=1)==True]
如果您有列列表:

df[df[COLS].all(axis=1)==True]
相反,只需执行
False

df[df.all(axis=1)==False]

如果需要所有列:

df[df.all(axis=1)==True]
如果您有列列表:

df[df[COLS].all(axis=1)==True]
相反,只需执行
False

df[df.all(axis=1)==False]

df.loc[df[magic\u list\u of_columns].all(axis='columns')]
df.loc[df[magic\u list\u of_columns].all(axis='columns')]
我想的不是相反的情况。从我最初的示例中,我将寻找索引1和4来详细说明,在一个实例中a)我想对列列表的值为“True”的行进行切片,在另一个实例中b)它们为“False”的行进行切片,我想这应该是:df[df[COLS].any(axis=1)==False]最后一种情况应该是
df[~df.all(axis=1)]
我认为相反的情况不是我想要的。从我最初的例子中,我将寻找索引1和4来详细说明,在一个例子中a)我想为列列表的值为“True”的行切片,在另一个例子中b)它们为“False”的行切片,我想这应该是:df[df[COLS].any(axis=1)==False]最后一个例子应该是
df[~df.all(axis=1)]