计算Dataframe每列中的非NaN条目数

时间:2015-04-30 14:57:41

标签: python pandas dataframe count nan

我有一个非常大的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

3 个答案:

答案 0 :(得分:78)

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

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

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

答案 1 :(得分:2)

如果您正在处理空字符串,您可能也希望将它们计为 NA:

df.replace('', np.nan).count()

或者如果您还想删除空白字符串:

df.replace(r'^\s*$', np.nan, regex=True).count()

答案 2 :(得分:1)

如果要对非NAN的总计数值求和,则可以这样做;

np.sum(df.count())