【发布时间】:2021-12-07 17:44:44
【问题描述】:
我正在尝试填充标题为“标签”的列,该列是 lambda 函数中条件语句的结果,该函数涉及数据框的两列。我想根据“WY”和“WY Week”列中的特定条件创建数字标签。例如,如果 WY 小于 2010,则标签为 1;如果 WY 大于 2010,则标签为 2;如果 WY 值大于 2010,则标签为 3,WY 周值介于 26 和 40 之间。
我对一列的一个条件没有问题,如下所示:
GC['label'] = GC['WY'].apply(lambda x: 1 if x >= 1985 else 0)
但是当我尝试编写涉及两列和多个条件的条件语句时,我抛出了一个代码:
CJ['label'] = CJ[['WY','WY Week']].apply(lambda x,y: 1 if x < 2010 else (2 if x >= 2010 and (y >= 26 and y <= 40)) else )
错误是语法错误:
File "<ipython-input-21-6b6fa416588d>", line 7
CJ['label'] = CJ[['WY','WY Week'].apply(lambda x,y: 1 if x < 2010 else (2 if x >= 2010) and (y >= 26 and y <= 40) else )
^
SyntaxError: invalid syntax
我觉得我已经很接近了,但需要一些帮助,因为它是我需要这样编写的几个条件语句之一。
【问题讨论】:
-
在最后一个
else之后你什么都没有。在这种情况下,值应该是多少? -
CJ[['WY','WY Week']你错过了一个结束]。CJ[['WY','WY Week']]。 python(2 if x >= 2010)中不允许没有 else 的三元运算符你能概述一下你想要完成的事情吗?因为从提供的代码中并不能立即清楚。 -
另外,最后一个
else需要在(2 if x >= 2010 ...)括号内。 -
我建议您不要对
lambda执行此操作,尝试将所有内容放在一行中只会让人感到困惑。定义一个命名函数并使用if语句。 -
@HenryEcker 我固定了支架。我的疏忽很大。
标签: python pandas conditional-statements