给定一个pandas数据框架,其中包含可能分散在这里和那里的NaN值:
问:如何确定哪些列包含NaN值?特别是,我能得到包含nan的列名的列表吗?
给定一个pandas数据框架,其中包含可能分散在这里和那里的NaN值:
问:如何确定哪些列包含NaN值?特别是,我能得到包含nan的列名的列表吗?
当前回答
这两种方法都有效:
df.isnull().sum()
df.isna().sum()
DataFrame方法isna()或isnull()完全相同。
注意:空字符串”被认为是False(不认为是NA)
其他回答
如果您希望查找包含NaN值的列并获得列名列表,则该代码可以工作。
na_names = df.isnull().any()
list(na_names.where(na_names == True).dropna().index)
如果要查找值都是nan的列,可以将any替换为all。
这是其中一种方法。
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. 用于获取至少有一个空值的列。(列名称)
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]
我有一个问题,我必须有许多列在屏幕上进行视觉检查,所以一个筛选并返回违规列的短列表比较
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)]