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

In Python DataFrame how to find out number of rows that have valid values of columns

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

在一个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)

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

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

使用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)