使用if-else语句的多个条件

嗨,你们好,
我正在尝试用Python语言复制一个SAS函数,不知道该怎么做。如果你们能帮我解决这个问题,那就太好了。
以下是要求。
我想在这里执行两个不同的功能。

选择 | 换行 | 行号
  1. if name in ("spiderman","antman") and salary in range(1000,2000) and city not in ("boston","dubai"):
  2.     new_column=age+salary
  3. else:
  4.     new_column=age*salary

以下是虚拟数据集:

选择 | 换行 | 行号
  1. name    age    salary    city
  2. spiderman    20    100    boston
  3. he-man    21    200    london
  4. superman    22    300    newyork
  5. thor    23    400    cairns
  6. ironman    24    500    sydney
  7. aquaman    25    600    california
  8. antman    26    700    spain
  9. optimus prime    27    100    sydney
  10. bumble bee    28    170    newyork
  11. what man    29    290    london
  12. spiderman    30    1000    auckland
  13. spiderman    31    1800    beijing
  14. spiderman    32    3000    delhi
  15. antman    33    100    tokyo
  16. antman    34    5000    moscow
  17. antman    34    1200    dubai
  18. antman    35    1800    malaysia

向您致以亲切的问候,
CK

# 回答1


你有什么问题?在我看来,您的代码没有问题。
# 回答2


嗨,

选择 | 换行 | 行号
  1. def fun_check(event):
  2.  
  3.     if name in ("spiderman","antman") and salary in range(1000,2000) and city not in ("boston","dubai"):
  4.         return age+salary
  5.     else:
  6.         return age*salary
  7.  
  8. heros=heros.assign(new_col=heros.apply(fun_check(event),axis=1))

我从最后一行代码中得到的错误是,我将变量NEW_COL赋给HEROS数据帧。
以下是错误消息:

选择 | 换行 | 行号
  1. NameError: name 'event' is not defined
  2.  

向您致以亲切的问候,
CK

# 回答3


这个错误不言而喻。在该语句的作用域中没有声明名为EVENT的变量。不知道你期望从这种方式得到什么,太小的代码片段。
# 回答4


嗨,
我尝试了另一种方法,它奏效了,但它不是
非常高效的一种

选择 | 换行 | 行号
  1. heros['var1'] = heros['age'] * heros['salary']
  2.  
  3. heros.loc[((heros['name'] == 'spiderman') | (heros['name'] == 'antman')) & 
  4.           ((heros['salary'] > 1000) & (heros['salary'] < 2000)) &
  5.  
  6.           ((heros['city'] != 'boston') |
  7.           (heros['city'] != 'dubai')),'var1'] = heros['age'] + heros['salary']
  8.  
  9. print(heros)

有没有什么有效的方法来达到这个效果。
向您致以亲切的问候,
CK

标签: python

添加新评论