繁体   English   中英

Pandas 如果该行中的所有值都为假,则删除该行

[英]Pandas remove row if all values in that row are false

我正在整理我的数据集中的一些行

output = {
         'id1': ['False', 'False', 'False', 'False'],
         'id2': ['True', 'False', 'False', 'False'],
         'id3': ['True', 'False', 'True', 'False'],
         'id4': ['True', 'False', 'True', 'True'],
    }

所以使用上面的第 2 行包含所有错误在此处输入图像描述

因此,我不需要使用它,所以我只想删除它

newoutput = {
         'id1': ['False',  'False', 'False'],
         'id2': ['True',  'False', 'False'],
         'id3': ['True',  'True', 'False'],
         'id4': ['True',  'True', 'True'],
    }

我已经检查了其中包含 false 的行

output.drop(output[output != False].index, inplace=True)

但这只是将行中的任何值视为 False 而不是 All

使用DataFrame.any测试是否匹配boolean indexing中的至少一个True ,因此仅删除False的行

因为使用解决方案转换为 boolean 是没有必要的:

df = df[df.any(axis=1)]

我通过df = pd.DataFrame(output)构造了df

您可以使用

>>> df[df.replace({'False': False, 'True': True}).any(1)]
     id1    id2    id3   id4
0  False   True   True  True
2  False  False   True  True
3  False  False  False  True

我强烈建议使用布尔值而不是字符串来指示TrueFalse 在这种情况下,解决方案是对df[df.any(1)]的简单重新分配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM