In[71]: dfOut[71]:
a b c0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[72]: df.isna().any()Out[72]:
a True
b True
c False
dtype: bool
In[97]: dfOut[97]:
a b c0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[98]: pd.isnull(df).sum()>0Out[98]:
a True
b True
c False
dtype: bool
или, как @root предложил более ясную версию:
In[5]: df.isnull().any()Out[5]:
a True
b True
c False
dtype: boolIn[7]: df.columns[df.isnull().any()].tolist()Out[7]:['a','b']
выбрать подмножество - все столбцы, содержащие хотя бы одно NaNзначение:
In[31]: df.loc[:, df.isnull().any()]Out[31]:
a b0NaN7.010.0NaN22.0NaN31.07.041.03.057.04.062.06.079.06.083.00.099.00.0
У меня была проблема, когда мне приходилось много столбцов визуально просматривать на экране, поэтому короткий список компов, который фильтрует и возвращает ошибочные столбцы
nan_cols =[i for i in df.columns if df[i].isnull().any()]
В наборах данных, имеющих большое количество столбцов, еще лучше увидеть, сколько столбцов содержат нулевые значения, а сколько нет.
print("No. of columns containing null values")print(len(df.columns[df.isna().any()]))print("No. of columns not containing null values")print(len(df.columns[df.notna().all()]))print("Total no. of columns in the dataframe")print(len(df.columns))
Например, в моем фрейме данных он содержал 82 столбца, из которых 19 содержали хотя бы одно нулевое значение.
Кроме того, вы также можете автоматически удалять столбцы и строки в зависимости от того, какие значения больше нуля.
Вот код, который делает это разумно:
df.isna().any()[lambda x: x]
работает на меняОтветы:
ОБНОВЛЕНИЕ: использование панд 0.22.0
В новых версиях Pandas появились новые методы DataFrame.isna () и DataFrame.notna ().
как список столбцов:
чтобы выбрать эти столбцы (содержащие хотя бы одно
NaN
значение):СТАРЫЙ ответ:
Попробуйте использовать isnull () :
или, как @root предложил более ясную версию:
выбрать подмножество - все столбцы, содержащие хотя бы одно
NaN
значение:источник
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
,notna
?Вы можете использовать
df.isnull().sum()
. Он показывает все столбцы и общее количество NaN для каждой функции.источник
У меня была проблема, когда мне приходилось много столбцов визуально просматривать на экране, поэтому короткий список компов, который фильтрует и возвращает ошибочные столбцы
если это кому-нибудь пригодится
источник
В наборах данных, имеющих большое количество столбцов, еще лучше увидеть, сколько столбцов содержат нулевые значения, а сколько нет.
Например, в моем фрейме данных он содержал 82 столбца, из которых 19 содержали хотя бы одно нулевое значение.
Кроме того, вы также можете автоматически удалять столбцы и строки в зависимости от того, какие значения больше нуля.
Вот код, который делает это разумно:
Примечание. Приведенный выше код удаляет все ваши нулевые значения. Если вы хотите нулевые значения, обработайте их раньше.
источник
Я использую эти три строки кода, чтобы распечатать имена столбцов, которые содержат хотя бы одно нулевое значение:
источник
Оба из них должны работать:
Методы DataFrame
isna()
илиisnull()
полностью идентичны.Примечание : пустые строки
''
считаются ложными (не считаются NA)источник
Это сработало для меня,
1. Для получения столбцов, имеющих как минимум 1 нулевое значение. (имена столбцов)
2. Для получения столбцов с числом, имеющим как минимум 1 нулевое значение.
[Необязательно] 3. Для получения процента от нуля.
источник