#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.