首页 > 解决方案 > pandas数据框中的lambda函数中的多个条件

问题描述

我正在尝试通过 lambda 函数传递多个条件语句,在我的 pandas Dataframe 中创建一个新列。

我的问题与这个问题非常相似:Lambda 包括 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语句的语法错误。

标签: pythonpandaslambda

解决方案


我们通常做 np.select

s1=ops['depot_name']=='Field'
s2=ops['depot_name']=='Unknown Location'
ops['repair_location']=np.select([s1,s2],['Field','Unknown Location'],default='Depot')

推荐阅读