在Python Pandas中,检查DataFrame是否有一个(或多个)NaN值的最佳方法是什么?

我知道函数pd。isnan,但这将返回每个元素的布尔值的DataFrame。这篇文章也没有完全回答我的问题。


当前回答

为此,我们可以使用df.isna().any()语句。这将检查我们所有的列,如果有任何缺失值或nan返回True,如果没有缺失值则返回False。

其他回答

只是用 math.isnan(x),如果x是NaN(不是数字)则返回True,否则返回False。

另一种方法是dropna,检查长度是否相等:

>>> len(df.dropna()) != len(df)
True
>>> 

如果你需要知道有多少行有“一个或多个nan”:

df.isnull().T.any().T.sum()

或者如果你需要取出这些行并检查它们:

nan_rows = df[df.isnull().T.any()]
import missingno as msno
msno.matrix(df)  # just to visualize. no missing value.

要找出特定列中哪些行有nan:

nan_rows = df[df['name column'].isnull()]