Skip to main content
 首页 » 编程设计

python之ValueError : The truth value of a Series is ambiguous. 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all():返回具有空值的列

2025年05月04日14rubylouvre

我正在处理信用风险分析项目的缺失数据。 Dataframe 的许多列中都缺少值。 数据框loan_data如下:

[IN]: loan_data 
[OUT]: 
 
Emp_ID   Emp_Name    City_Name     Salary      Designation  Emp_years Age 
  1        A           Delhi       30,00,000      GM          15       45 
  2        B           Mumbai       NAN        Clerk          2        22 
  3        c           NAN          NAN         Peon          4        18 
  4        D           Chennai      7,000       NAN           5        20 
  5        E           NAN          NAN          NAN          4        50 

等等....

现在我想要显示的唯一列应该是那些我有 NAN 值的列,我想要它们的总和(有多少行有 NAN 值

例如,

[IN]:  
def return_loan_data_missing(x): 
if (x.isnull().sum()>0): 
    return x.isnull().sum() 
 
return_loan_data_missing(loan_data) 
 
[OUT]: 
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(),  
a.item(), a.any() or a.all(). 

所需的输出:

 [OUT]: 
 City_Name 2      
 Salary 3 
 Designation 2 

现在我得到的输出:

 [IN]: 
  loan_data.isnull().sum() 
 [OUT]: 
 Emp_ID 0 
 Emp_Name 0 
 City_Name 2 
 Salary 3 
 Designation 2 
 Emp_years 0 
 Age 0 

请帮忙

请您参考如下方法:

您可以过滤 Series 以获得更大的 0:

s = loan_data.isnull().sum() 
s = s[s > 0] 

或者使用callable用于过滤:

s = loan_data.isnull().sum().loc[lambda x: x > 0] 

print (s) 
City_Name      2 
Salary         3 
Designation    2 
dtype: int64 

你的函数应该被更改为 test if at least one True in mask by Series.any :

def return_loan_data_missing(x): 
    s = x.isnull().sum() 
    m = s > 0 
    if m.any(): 
        return s[m] 
    else: 
        return 'No missing value in data.' 
 
print (return_loan_data_missing(loan_data)) 
City_Name      2 
Salary         3 
Designation    2 
dtype: int64