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

Drop rows where all Boolean columns are False - Python

如果所有行的值为 False,我如何删除一行? (这里意味着删除 'kiwi'。)

print(df.head())

>   concatenated   category    apple  banana  orange
> 0  apple_banana    two        True    True   False
> 1        apple     one        True   False   False
> 2        banana    one        False   True   False
> 3        kiwi      one        False   False  False

您可以遍历 df 中的每一行并比较列,如果得到 3 False 那么您可以 drop row,

 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)   

试试这个