我想在DataFrame对象的所有列中查找具有某些值,例如None
或""
或NaN
(基本上为空值)的行数。我怎样才能做到这一点?
答案 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()
获取具有None
和NaN
值的行数。
将df.eq(value).sum()
用于任何类型的值,包括空字符串""
。