【问题标题】:Counting number of zeros per row by Pandas DataFrame?通过 Pandas DataFrame 计算每行的零个数?
【发布时间】:2021-10-05 13:43:36
【问题描述】:

给定一个 DataFrame,我想计算每行的零数。如何用 Pandas 计算它?

这就是我目前所做的,这将返回零索引

def is_blank(x):
    return x == 0 

indexer = train_df.applymap(is_blank)

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用布尔比较会产生一个布尔 df,然后我们可以将其转换为 int,True 变为 1,False 变为 0,然后调用 count 并传递参数 axis=1 以逐行计数:

    In [56]:
    
    df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]})
    df
    Out[56]:
       a  b  c
    0  1  0  0
    1  0  0  0
    2  0  1  0
    3  1  0  0
    4  3  1  0
    In [64]:
    
    (df == 0).astype(int).sum(axis=1)
    Out[64]:
    0    2
    1    3
    2    2
    3    2
    4    1
    dtype: int64
    

    分解以上内容:

    In [65]:
    
    (df == 0)
    Out[65]:
           a      b     c
    0  False   True  True
    1   True   True  True
    2   True  False  True
    3  False   True  True
    4  False  False  True
    In [66]:
    
    (df == 0).astype(int)
    Out[66]:
       a  b  c
    0  0  1  1
    1  1  1  1
    2  1  0  1
    3  0  1  1
    4  0  0  1
    

    编辑

    正如大卫所指出的,astypeint 是不必要的,因为在调用 sum 时,Boolean 类型将向上转换为 int,因此这简化为:

    (df == 0).sum(axis=1)
    

    【讨论】:

      【解决方案2】:

      您可以使用以下 python pandas 函数计算每列的零。 它可以帮助需要计算每列的特定值的人

      df.isin([0]).sum(axis=1)
      
      

      这里的df是数据框,我们要计算的值是0

      【讨论】:

        【解决方案3】:

        这是使用apply()value_counts() 的另一种解决方案。

        df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]})
        df.apply( lambda s : s.value_counts().get(key=0,default=0), axis=1)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-10-18
          • 2021-07-26
          • 2023-03-11
          • 2012-08-01
          • 1970-01-01
          • 2013-11-28
          • 1970-01-01
          相关资源
          最近更新 更多