代码之家  ›  专栏  ›  技术社区  ›  Rocketq

如何计算列上的非空值,然后单击

  •  0
  • Rocketq  · 技术社区  · 5 年前

    import pandas as pd
    import numpy as np
    df = pd.DataFrame({'agr' : [1,1,1],
                    'col1' : [1, np.nan, np.nan],
                   'col2' : [np.nan, 2, 3] })
    df.agg({'col1' : [np.sum, np.count_nonzero],
           'col2' : [ np.sum, np.count_nonzero]})
    

    这个虚拟的aproach给出了3,3。

    2 回复  |  直到 5 年前
        1
  •  1
  •   vercelli    5 年前

    df.count() 默认情况下不包括NaN。

    import pandas as pd
    df = pd.DataFrame({'agr' : [1,1,1],
                'col1' : [1, np.nan, np.nan],
               'col2' : [np.nan, 2, 3] })
    df[['col1', 'col2']].count()
    

    -

    col1    1
    col2    2
    dtype: int64
    

    另一种方式:

    df[['col1', 'col2']].agg("count")
    
        2
  •  0
  •   BENY    5 年前

    你需要添加另一个条件 notnull ,自 0 != np.nan 是真的

    (df.ne(0)&df.notnull()).sum()
    Out[305]: 
    agr     3
    col1    1
    col2    2
    dtype: int64
    

    df.notnull().sum()
    Out[322]: 
    agr     3
    col1    1
    col2    2
    dtype: int64