Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件删除布尔行_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 根据条件删除布尔行

Python 根据条件删除布尔行,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个df,需要从中删除某些行 如果NIT为真,其余的都为假,我怎么能删除所有行呢?小谎也一样 删除以下所有行: number ISM AAAL GSOG GSI AN NIT FIB 2 FALSE FALSE FALSE FALSE FALSE TRUE FALSE 222 FALSE FALSE FALSE FALSE FALSE FALSE TRUE 如果我的答案令您满意,请将其标记

我有一个df,需要从中删除某些行

如果NIT为真,其余的都为假,我怎么能删除所有行呢?小谎也一样

删除以下所有行:

number ISM  AAAL    GSOG    GSI     AN      NIT     FIB
2     FALSE FALSE   FALSE   FALSE   FALSE   TRUE    FALSE
222   FALSE FALSE   FALSE   FALSE   FALSE   FALSE   TRUE    

如果我的答案令您满意,请将其标记为答案,以便其他用户可以看到它回答了问题。是否有一种方法可以一步完成,以便在删除行后我只有一个数据帧?当然,您可以将所有条件添加到一行中,但这会损害可读性。
df=df.drop(df[(df['NIT']&~df.drop('NIT',axis=1)。所有(axis=1))|(df['FIB']和~df.drop('FIB',axis=1)。all(axis=1))].index)
或者,您可以将其简化为
df=df[~df.drop(['NIT','FIB'],axis=1)。all(axis=1)和~df['NIT','FIB']]。all(axis=1)
mask_NIT_true = df['NIT']
mask_all_exc_NIT_false = ~df.drop('NIT', axis=1).all(axis=1)
df = df.drop(df[mask_NIT_true & mask_all_exc_NIT_false].index)
mask_FIB_true = df['FIB']
mask_all_exc_FIB_false = ~df.drop('FIB', axis=1).all(axis=1)
df = df.drop(df[mask_FIB_true & mask_all_exc_FIB_false].index)