查找 DataFrame 列中常见的缺失 (nan) 值数量

Find how many common missing (nan) values are in DataFrame columns

我有大约 20 列和 50000 行的 DataFrame。 Pandastable的一小部分如下:

我正在寻找某种方法来计算几列中相同位置(行)中有多少缺失值。 当列数已知时,只需编写如下代码:

((df['HomeRemote'].isnull() & df['CompanySize'].isnull()).sum()

可能是答案,但不幸的是,要比较的列数可能超过 2。我不知道,因为这取决于情况,这就是为什么我寻找“通用”解决方案(工作对于任意数量的列)。

我的想法是找到一种方法将每个 df[col].isnull()“推”入 FOR 循环(其中 col 是列的名称),但是我在每个之间放置“&”时遇到问题df[col].isnull().

也许这里有人可以考虑其他的可能性?

如果有什么地方不够清楚,请告诉我。

尝试:

示例输入:

>>> df
     A    B    C    D    E
0  NaN  1.0  1.0  1.0  1.0
1  NaN  NaN  NaN  1.0  1.0
2  1.0  1.0  1.0  NaN  1.0
3  1.0  1.0  1.0  1.0  NaN
4  1.0  1.0  NaN  1.0  1.0
5  NaN  1.0  1.0  1.0  1.0
6  1.0  1.0  1.0  NaN  1.0
7  1.0  NaN  1.0  NaN  1.0
8  1.0  1.0  1.0  1.0  1.0
9  1.0  1.0  1.0  1.0  1.0

A、B、C列中相同位置有多少个缺失值:

>>> df[['A', 'B', 'C']].isnull().all(axis=1).sum()
1

一步一步:

# Find missing values
>>> df[['A', 'B', 'C']].isnull()
       A      B      C
0   True  False  False
1   True   True   True  # <- HERE
2  False  False  False
3  False  False  False
4  False  False   True
5   True  False  False
6  False  False  False
7  False   True  False
8  False  False  False
9  False  False  False

# Reduce
>>> df[['A', 'B', 'C']].isnull().all(axis=1)
0    False
1     True  # <- HERE
2    False
3    False
4    False
5    False
6    False
7    False
8    False
9    False
dtype: bool

# Reduce again
>>> df[['A', 'B', 'C']].isnull().all(axis=1).sum()
1