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

cry*_*ryp 57 python count nan dataframe pandas

我有一个非常大的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
Run Code Online (Sandbox Code Playgroud)

输出:

a: 3
b: 2
d: 1
Run Code Online (Sandbox Code Playgroud)

Ale*_*ley 97

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

>>> df1.count()
a    3
b    2
d    1
dtype: int64
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,如果你手动创建一个 df 并放置 np.nan 我猜它可以工作。但这不是您通常创建列的方式。至少对我来说,一种经常使用的方法是: df['C'] =np.where(df.A>df.B,'some text',np.nan)。这会将 np.nan 变成“nan”并且不再被识别为 nan。 (2认同)

hem*_*nta 8

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

np.sum(df.count())
Run Code Online (Sandbox Code Playgroud)