【发布时间】:2017-05-10 14:24:23
【问题描述】:
我有一个包含收入和成本数据的简单 df。就我而言,成本可能是负数。
我想按如下方式计算收入成本比:
if ((x['cost'] < 0) & (x['rev'] >=0 )):
x['r_c_ratio'] = (x['rev'] + abs(x['cost'])) / abs(x['cost'])
elif((x['cost'] > 0) & (x['rev'] <=0 )):
x['r_c_ratio'] = (x['cost'] + abs(x['rev'])) / x['cost']
else:
x['r_c_ratio'] = x['rev'] / x['cost']
如何在 lambda 函数中实现这一点?
df['revenue_cost_ratio'] = df.apply(lambda x:....
根据这个link,lambda 语法是:
lambda x: True if x % 2 == 0 else False
这只允许一个 else 条件。
【问题讨论】:
-
这与您关于创建
lambda函数的问题无关,但&是Python 中的位与运算符。当您执行逻辑与(这似乎是您想要的)时,您需要and运算符。这两个运算符对于布尔值True和False的工作方式相同,但如果您在操作中涉及其他“真实”值(例如比较1 & 2和1 and 2)。