我有一個簡單的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