Skip to main content
 首页 » 编程设计

使用 IF 语句的 Python 用户定义函数不起作用

2025年05月04日14shanyou

我有以下数据框

Index   education   marital-status  occupation         gender    target 
0       bachelors   never-married   adm-clerical       male      0 
1       bachelors   spouse          exec-managerial    male      0 
2       hs-grad     divorced        handlers-cleaners  male      0 
3       11th        spouse          handlers-cleaners  male      0 
4       bachelors   spouse          prof-specialty     female    0 
5       masters     spouse          exec-managerial    female    0 
6       other       other           other-service      female    0 
7       hs-grad     spouse          exec-managerial    male      1 
8       masters     never-married   prof-specialty     female    1 
9       bachelors   spouse          exec-managerial    male      1 

有人可以向我解释为什么以下内容不起作用 - 从我阅读的内容和我所看到的应用来看,我觉得应该是这样。

def new_features(education, gender, target): 
 
  if [((education == 'bachelors') & (gender == 'male') & (target == 1))]: 
      result = 'educated_male_convert' 
  elif [((education == 'bachelors') & (gender == 'female') & (target == 1))]: 
      result = 'educated_female_convert' 
  else: 
      result = 'educated_not_determined' 
  return result 
 
df['new_col'] = df.apply(lambda row: new_features(row['education'], row['gender'], row['target']), axis=1) 

它只是返回:educated_male_convert

我遵循了大量教程并阅读了其他线程并将相同的代码应用于我自己的数据集 - 不确定我遗漏了什么。

任何帮助将不胜感激

请您参考如下方法:

问题是您将 if 条件放在方括号中。因此,代码不是测试表达式 if False: ...,而是实际测试 if [False]: ...。由于任何非空列表的计算结果为 True,因此 [False] 将被计算为 True,并且代码会转到错误的分支。