我正在整理数据集中的一些行
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'],
}
我可以检查其中是否包含错误的行
output.drop(output[output != False].index, inplace=True)
但这只是查看行中的ANY值是否为False而不是All
答案 0 :(得分:4)
使用DataFrame.any
来测试是否匹配boolean indexing
中的至少一个True
,因此仅删除了False
的行
因为使用了this解决方案,所以不必将其转换为布尔值:
df = df[df.any(axis=1)]
答案 1 :(得分:2)
我通过df
构建了df = pd.DataFrame(output)
。
您可以使用
>>> 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)]
。