删除所有布尔列都为False的行-Python

删除所有布尔列都为False的行-Python,python,for-loop,filter,drop,Python,For Loop,Filter,Drop,如果所有行的值都为False,如何删除一行?(这里的意思是扔掉“猕猴桃”。) 您可以遍历df中的每一行并比较列,如果得到3False,则可以删除行 for index, row in df.iterrows(): if not row["apple"] and not row["banana"] and not row["orange"]: df.drop(index=index, inplace=True)

如果所有行的值都为False,如何删除一行?(这里的意思是扔掉“猕猴桃”。)


您可以遍历
df
中的每一行并比较列,如果得到3
False
,则可以
删除

 for index, row in df.iterrows():
    if not row["apple"] and  not row["banana"] and not row["orange"]:
        df.drop(index=index, inplace=True)
           
也试试这个

  df1 = df[~(~(df['banana'])& ~(df['apple']) & ~(df['orange']))]  
回答您最后的表扬

  boolean_columns = ['apple', 'banana', 'orange']
  x = " & ".join('~('+x+')' for x in boolean_columns) 
  x = "~("+x+")"
  df1 = df.query(x)   

试试这个

你还没有显示你对
df
的定义。刚刚更新过。有没有一种更有效、更通用的方法?实际上,我有很多列和行。我可以使用列表而不是指定列来实现这一点吗?你的意思是,列名作为列表..?是的,像布尔列=['apple','banana','orange']
  boolean_columns = ['apple', 'banana', 'orange']
  x = " & ".join('~('+x+')' for x in boolean_columns) 
  x = "~("+x+")"
  df1 = df.query(x)