如何计算 pandas 列上的非空值然后聚合

How to count not null values on pandas column then agregating

我想计算每个聚合级别的列的非空值:

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]})

这种虚拟方法给出了 3,3。 但我需要1,2。这里有什么问题以及如何解决

您需要添加另一个条件 notnull,因为 0 != np.nan 为 True

(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

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")