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

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


当前回答

这将只包括至少有一个null/na值的列。

 df.isnull().sum()[df.isnull().sum()>0]

其他回答

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

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

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

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

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

nan_rows = df[df.isnull().T.any()]
df.isnull().sum()

这将为您提供DataFrame各列中所有NaN值的计数。

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

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

或者你可以在DF上使用.info(),例如:

df.info(null_counts=True)返回列中非_null的行数,例如:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 3276314 entries, 0 to 3276313
Data columns (total 10 columns):
n_matches                          3276314 non-null int64
avg_pic_distance                   3276314 non-null float64