Выберите данные и посчитайте, когда определенные столбцы имеют нулевое значение в панд

#python #pandas #dataframe

Вопрос:

У меня есть фрейм данных, в котором есть 2 столбца, которые я хочу отфильтровать и подсчитать общее количество «нулевых» значений для каждого столбца.

Попробовал этот код;

 chck_nulls = df['account_id'].isnull().sum() | df['customer_id'].isnull().sum() print (df[chck_nulls])  

Получение этой ошибки;

 chck_nulls = df['account_id'].isnull().sum() | df['customer_id'].isnull().sum()  print (df[chck_nulls])  1  chck_nulls = df['account_id'].isnull().sum() | df['customer_id'].isnull().sum()  2  print (df[chck_nulls])  ---------------------------------------------------------------------------  KeyError Traceback (most recent call last)  /anaconda/envs/azureml_py38/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)  3079 try:  -gt; 3080 return self._engine.get_loc(casted_key)  3081 except KeyError as err: KeyError: 28671  

Примеры Данных

 Customer Name account_id customer_id Adam null null Michael null null Jenkins null null  

Ожидаемые результаты;

 customer_id 3 account_id 3  

Любая помощь будет высоко оценена!

Спасибо

Комментарии:

1. Попробуйте «isna()» вместо «isnull ()».

2. Или «count_nan = len(df[столбец]) — df[столбец].count()»

3. @Wilian попробовал isna(), та же ошибка

4. Тоже не сработало

5. моя вина, я только что опубликовал решение. попробуй это! я по ошибке вставил ваше заявление о печати, не проверив его. в вашем операторе печати есть ошибка, потому что chck_nulls-это целое число (общее количество записей в двух упомянутых вами столбцах со значениями null), а не логическое значение.

Ответ №1:

 chck_nulls_account_id, chck_nulls_customer_id = (df['account_id'].isnull()).sum(), (df['customer_id'].isnull()).sum()  # print(chck_nulls_account_id, chck_nulls_customer_id) print(f'customer_idt{chck_nulls_customer_id}') print(f'account_idt{chck_nulls_account_id}')  # The following two print statements will give you the df with entries having only null values in each column print(df[df['account_id'].isnull()]) print(df[df['customer_id'].isnull()]) # The following print statement will give you the df with entries having only null values in both the columns print(df[(df['account_id'].isnull()) | df['customer_id'].isnull()])    

print(chck_nulls) даст вам правильную сумму общих пустых записей в столбцах account_id и customer_id.