数据框架中每列中非 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
142521 次浏览

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

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

类似地,count(axis=1)返回每行中非 NaN值的数目。

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

np.sum(df.count())

如果你处理的是空字符串,你也可以把它们算作 NA:

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

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

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

你可以使用方法 notna/notnullsum:

df.notna().sum()

Output:

a    3
b    2
d    1
dtype: int64