熊猫数据框中的lambda函数中的多个条件

时间:2020-04-16 00:18:42

标签: python pandas lambda

我正在尝试通过lambda函数传递多个条件语句在熊猫数据框中创建一个新列。

我的问题与以下问题非常相似: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语句的语法错误。

2 个答案:

答案 0 :(得分:2)

我们通常做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')

答案 1 :(得分:2)

您可以使用np.where

import numpy as np
ops['repair_location'] = (
    ops['depot_name']
    .apply(lambda x: np.where(x=='Field', 'Field', np.where(x=='Unknown Location', 'Unknown Location', 'Depot')))
)