给定一个pandas数据框架,其中包含可能分散在这里和那里的NaN值:

问:如何确定哪些列包含NaN值?特别是,我能得到包含nan的列名的列表吗?


当前回答

df.isna()返回NaN值为True,其余为False。所以,做:

.any df.isna () ()

将返回True的任何列有NaN, False的其余

其他回答

Features_with_na =[feature用于数据帧中的特征。列if dataframe[features].isnull().sum()>0]

对于features_with_na中的feature: Print (feature, np.round(dataframe[feature].isnull().mean(), 4), '%缺失值') 打印(features_with_na)

它将为dataframe中的每一列提供缺失值的%

这是其中一种方法。

import pandas as pd
df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan],'c':[np.nan,2,np.nan], 'd':[np.nan,np.nan,np.nan]})
print(pd.isnull(df).sum())

在这里输入图像描述

我使用这三行代码打印出包含至少一个空值的列名:

for column in dataframe:
    if dataframe[column].isnull().any():
       print('{0} has {1} null values'.format(column, dataframe[column].isnull().sum()))

我知道这是一个很好的回答问题,但我想做一个小小的调整。这个答案只返回包含空值的列,并且仍然显示空值的计数。

1-liner:

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

描述

在每一列中计算空值

null_count_ser = pd.isnull(df).sum()

True|False序列,描述该列是否为空

is_null_ser = null_count_ser > 0

使用T|F系列来过滤那些没有

null_count_ser[is_null_ser]

示例输出

name          5
phone         187
age           644

您可以使用df.isnull().sum()。它显示了每个特征的所有列和总nan。