Answers:
您可以像这样对行进行计数:
test_df.apply(lambda x: x.count(), axis=1)test_df:
    A   B   C
0:  1   1   3
1:  2   nan nan
2:  nan nan nan输出:
0:  3
1:  1
2:  0您可以将结果添加为这样的列:
test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)结果:
    A   B   C   full_count
0:  1   1   3   3
1:  2   nan nan 1
2:  nan nan nan 0当使用熊猫,尽量避免在一个循环中,包括执行操作apply,map,applymap等等。这是慢!
如果要计算每列中的缺失值,请尝试:
df.isnull().sum() 要么 df.isnull().sum(axis=0)
另一方面,您可以通过以下方式在每一行中计数(这是您的问题):
df.isnull().sum(axis=1)
它大约比Jan Van der Vegt的解决方案快10倍(顺便说一句,他计算有效值,而不是缺失值):
In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop
In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop或者,您可以简单地对数据框对象使用info方法:
df.info()它为每列提供非空值的计数。
列中的空值,
df.isnull().sum(axis=0)列中的空白值,
c = (df == '').sum(axis=0)行中的值为空,
df.isnull().sum(axis=1)行中的空白值,
c = (df == '').sum(axis=1)>>> df = pd.DataFrame([[1, 2, np.nan],
...                    [np.nan, 3, 4],
...                    [1, 2,      3]])
>>> df
    0  1   2
0   1  2 NaN
1 NaN  3   4
2   1  2   3
>>> df.count(axis=1)
0    2
1    2
2    3
dtype: int64