【发布时间】:2020-04-16 00:18:42
【问题描述】:
我正在尝试通过 lambda 函数传递多个条件语句,在我的 pandas Dataframe 中创建一个新列。
我的问题和这个问题很相似:Lambda including if...elif...else 但该解决方案似乎不适用于我的 python (3.7) 版本。
这是我目前所拥有的:
在一个条件下,这是有效的:
ops['repair_location'] = ops['depot_name'].apply(lambda x: 'Field' if x == 'Field else 'Depot')
但我想添加另一个条件。使用链接问题的解决方案:
ops['repair_location'] = ops['depot_name'].apply(lambda x: 'Field' if x == 'Field' else (x == 'Unknown Location' 'Unknown Location' else 'Depot'))
这会返回指向最后一个else 语句的语法错误。
【问题讨论】:
-
你打算用这个表达式做什么:
x == 'Unknown Location' 'Unknown Location'?在任何情况下,您只有一个裸露的例外,这不是一个完整的条件表达式。你真的应该只使用一个完整的函数定义,这个 lambda 很快就会变得不可读