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

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


当前回答

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

其他回答

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

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

我有一个问题,我必须有许多列在屏幕上进行视觉检查,所以一个筛选并返回违规列的短列表比较

nan_cols = [i for i in df.columns if df[i].isnull().any()]

如果这对大家有帮助的话

此外,如果您想过滤掉nan值多于阈值的列,那么就使用85%

Nan_cols85 = [i for i in df.]if df[i].isnull().sum() > 0.85*len(data)]

这对我很有效,

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]
df.columns[df.isnull().any()].tolist()

它将返回包含空行的列的名称

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

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