删除所有布尔列都为False的行-Python
如果所有行的值都为False,如何删除一行?(这里的意思是扔掉“猕猴桃”。)删除所有布尔列都为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)
您可以遍历
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)
也试试这个
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)