计算数据框每一列中非NaN条目的数量


76

我有一个非常大的DataFrame,我想知道是否有一种简短的方法(一两个衬垫)来获取DataFrame中非NaN条目的计数。我不想一次做一列,因为我有将近1000列。

df1 = pd.DataFrame([(1,2,None),(None,4,None),(5,None,7),(5,None,None)], 
                    columns=['a','b','d'], index = ['A', 'B','C','D'])

    a   b   d
A   1   2 NaN
B NaN   4 NaN
C   5 NaN   7
D   5 NaN NaN

输出:

a: 3
b: 2
d: 1

1
df1 [df1.notnull()]。count()似乎起作用了
cryp 2015年

3
不需要额外的索引,df1.notnull()因为count无论如何都会忽略空值。
Alex Riley

1
与不同series.value_counts(..., dropna=False),没有选项df.count()可以直接获取NA计数。
smci

Answers:


135

count()方法返回NaN每列中非值的数量:

>>> df1.count()
a    3
b    2
d    1
dtype: int64

同样,count(axis=1)返回NaN每行中非值的数量。


1

如果要对非NAN的总计数值求和,则可以执行;

np.sum(df.count())
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.