在Python DataFrame中如何找出具有有效列值的行数

时间:2018-09-27 20:02:48

标签: python pandas dataframe sklearn-pandas

我想在DataFrame对象的所有列中查找具有某些值,例如None""NaN(基本上为空值)的行数。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

使用pandas dataframe.isin创建一个布尔数组。逐行求和,然后找到 结果> 0的行数。

在search_values列表中放置一个或多个值以在数据框的行中查找。

search_values = ['', np.nan, None]
(df.isin(search_values).sum(axis=1) > 0).sum()

如果您希望每列的行数:

df.isin(search_values).sum(axis=0)

答案 1 :(得分:1)

pandas.Series中(将其视为普通pandas.DataFrame的列):

>> s = pd.Series([np.nan, np.nan, 1, 2, np.nan])

>> s

0    NaN
1    NaN
2    1.0
3    2.0
4    NaN

>>  s.isnull().sum()

  3

对于pandas.DataFrame来说非常相似:

>>  pd.DataFrame(np.array([[np.nan, np.nan],
 ...:        [ 0., np.nan],
 ...:        [ 1.,  1.],
 ...:        [ 2.,  2.],
 ...:        [np.nan, np.nan]]))

>> df

     0    1
0  NaN  NaN
1  0.0  NaN
2  1.0  1.0
3  2.0  2.0
4  NaN  NaN

>> df.isnull().sum(axis=0)

0    2
1    3
dtype: int64

要逐行求和,只需输入.sum(axis=1)

答案 2 :(得分:1)

使用df.isnull().sum()获取具有NoneNaN值的行数。

df.eq(value).sum()用于任何类型的值,包括空字符串""