我有一个简单的DF与收入和成本数字。在我的情况下,成本可能是负面的。lambda函数与多个ifs使用熊猫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中的按位运算符。当你做逻辑时,你需要''和'运算符 - (这似乎是你想要的)。两个操作符对布尔值“True”和“False”的作用相同,但如果在操作中包含其他“真值”,则不会总是执行相同的操作(例如,将'1&2'与' 1和2')。 – Blckknght