[英]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'],
}
因此,我不需要使用它,所以我只想删除它
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
我强烈建议使用布尔值而不是字符串来指示True
和False
。 在这种情况下,解决方案是对df[df.any(1)]
的简单重新分配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.