在Pandas/Python中使用If /Else语句运算符

plupiseo  于 2023-01-28  发布在  Python
关注(0)|答案(1)|浏览(154)

我正在尝试运行一段脚本,当它读取CSV文件时,它会执行脚本中的命令。
这是代码rn:

x = input("Do you want to run a mini campaign? Type y for yes or n for no: ")
x = x.lower().strip()
if x == "y":
   df['Employee_Departments__c'] = df['Department'].apply(lambda x: 'Real Estate' if x == 'Operations' else x)
   df['Employee_Departments__c'] = df['Department'].apply(lambda x: 'Human Resources' if x == ['C-Suite', 'Human Resources'] else x)
   df['GPEC BI'] = df['Employee_Departments__c'].apply(lambda x:'MC' if x == 'Human Resources' or x == 'Real Estate' else '')
   df=df.drop(['Department'], axis=1)
else:
   df=df.drop(['Department', 'Employee_Departments__c', 'GPEC BI'], axis=1) #Removes the added columns if n is typed.
pass

当我运行这段代码时,它不会将操作标签标记为“真实的地产”,而是将其保留为操作。但是当我将“高级管理人员”的标签更改为“人力资源”时,它可以工作。然而,如果我将“房地产”行和“人力资源”行切换,“房地产”行可以工作,而“人力资源”行不能工作。
我对Python有点陌生,但在阅读Python书籍和其他建议时,我找不到如何让它按我需要的方式工作。
我试着运行它,希望列中填充我请求的适当内容。我试着执行or、if、else和where语句,看看是否有帮助,但没有。只有一行可以工作,我需要两行都工作。

rqcrx0a6

rqcrx0a61#

我认为这两行中只有一行有效的原因是你试图用if-elif-else来填充一个新的列df['Employee_Departments__c']。第二行有效是因为它覆盖了第一行。我建议你按照下面的答案来改变lambda函数的结构:
https://stackoverflow.com/a/44991451/21088924.
两行将合并为一行:

df['Employee_Departments__c'] = df['Department'].apply(lambda x: 'Real Estate' if x == 'Operations' else ('Human Resources' if x == ['C-Suite', 'Human Resources'] else x))

相关问题