【问题标题】:Pandas remove row if all values in that row are false如果该行中的所有值都是假的,熊猫会删除该行
【发布时间】:2020-10-12 04:50:04
【问题描述】:

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

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

所以使用上面的第 2 行包含所有 false

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

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 而不是全部

【问题讨论】:

    标签: python pandas boolean


    【解决方案1】:
    • 这假定数据框为 Boolean 值,而不是 string 类型。
    • 如另一个答案中所述,使用.replacestring 替换为Boolean 类型。

    给定

    df = pd.DataFrame({'id1': [True, False, False, False], 'id2': [True, False, False, False], 'id3': [True, False, True, False], 'id4': [True, False, True, True]})
    
         id1    id2    id3    id4
    0   True   True   True   True
    1  False  False  False  False
    2  False  False   True   True
    3  False  False  False   True
    

    使用DataFrame.any 将至少一个Trueboolean indexing 匹配,这将删除所有为False 的行。

    df = df[df.any(axis=1)]
    
         id1    id2    id3   id4
    0   True   True   True  True
    2  False  False   True  True
    3  False  False  False  True
    

    或者,要删除全部为True 的行,请使用.all() 并使用~ 取反。

    df[~df.all(axis=1)]
    
         id1    id2    id3    id4
    1  False  False  False  False
    2  False  False   True   True
    3  False  False  False   True
    

    【讨论】:

      【解决方案2】:

      我通过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)]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2019-11-08
        • 2017-10-16
        • 2015-10-19
        • 1970-01-01
        • 2021-07-30
        相关资源
        最近更新 更多