在 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()
获取具有 None
和 NaN
值的行数。
对任何类型的值使用 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)
我想在 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()
获取具有 None
和 NaN
值的行数。
对任何类型的值使用 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)