如何使用.apply()在Lambda函数上使用2参数

时间:2018-08-23 04:27:42

标签: python pandas lambda

是否可以使此代码更快?

    for i in range (len (data)):
        column_name = data['Name'].values[i]
        if data['Market'].values[i] == 'P':
            market = 'Local'
        else:
            market = 'Oversea'
        data['Momentum'].values[i] = self.Factor_Model (column_name, market)

我不习惯.apply()和lambda函数。您能指导我如何将上面的代码更改为下面的代码吗?

data['Momentum'] = data.apply(lambda row: self.Factor_Model(row['Name'],lambda row: if row['Market'].values == 'P' ))

谢谢您的指导。

1 个答案:

答案 0 :(得分:1)

我会用.apply()调用axis=1来对行进行操作。然后将Series中的每个项目直接传递给函数。

data['Location'] = np.where(data['Market'] == 'P', 'Local', 'Oversea')

data['Momentum'] = data.apply(lambda x: Factor_Model(x['Name'], x['Location']), axis=1)