我正在尝试运行一段脚本,当它读取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语句,看看是否有帮助,但没有。只有一行可以工作,我需要两行都工作。
1条答案
按热度按时间rqcrx0a61#
我认为这两行中只有一行有效的原因是你试图用if-elif-else来填充一个新的列
df['Employee_Departments__c']
。第二行有效是因为它覆盖了第一行。我建议你按照下面的答案来改变lambda函数的结构:https://stackoverflow.com/a/44991451/21088924.
两行将合并为一行: