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

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


当前回答

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

其他回答

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

.any df.isna () ()

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

这对我很有效,

1. 用于获取至少有一个空值的列。(列名称)

data.columns[data.isnull().any()]

2. 用于获取具有count的列,且至少有1个空值。

data[data.columns[data.isnull().any()]].isnull().sum()

(可选) 3.获取空计数的百分比。

data[data.columns[data.isnull().any()]].isnull().sum() * 100 / data.shape[0]

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

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

这是其中一种方法。

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())

在这里输入图像描述

这两种方法都有效:

df.isnull().sum()
df.isna().sum()

DataFrame方法isna()或isnull()完全相同。

注意:空字符串”被认为是False(不认为是NA)