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

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


当前回答

要查看包含nan的列和包含nan的行:

isnulldf = df.isnull()
columns_containing_nulls = isnulldf.columns[isnulldf.any()]
rows_containing_nulls = df[isnulldf[columns_containing_nulls].any(axis='columns')].index
only_nulls_df = df[columns_containing_nulls].loc[rows_containing_nulls]
print(only_nulls_df)

其他回答

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

如果您希望查找包含NaN值的列并获得列名列表,则该代码可以工作。

na_names = df.isnull().any()
list(na_names.where(na_names == True).dropna().index)

如果要查找值都是nan的列,可以将any替换为all。

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

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

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中的每一列提供缺失值的%

要查看包含nan的列和包含nan的行:

isnulldf = df.isnull()
columns_containing_nulls = isnulldf.columns[isnulldf.any()]
rows_containing_nulls = df[isnulldf[columns_containing_nulls].any(axis='columns')].index
only_nulls_df = df[columns_containing_nulls].loc[rows_containing_nulls]
print(only_nulls_df)