2014-06-29 54 views
1

我計算用下面的代碼我們可以在lambda python Pandas函數上使用多分支條件嗎?

temp['UFrio'] = temp['TempC'].map(lambda x: 0 if (x <0) math.sin((2*math.pi/28)*x) elif (x<25) else -1) 

新熊貓列,但它給了我一個無效的語法錯誤。

你能幫我嗎?

謝謝

+1

'0如果x <0,否則,math.sin( (2 * math.pi/28)* x)如果x <25 else -1' –

+0

@ behzad.nouri:請發表一個答案,以便它可以被表決。 – unutbu

+0

@ behzad.nouri謝謝。它正在工作。 – Hugo

回答

6

寫這樣的:

def thingy(x): 
    if x < 0: 
     return 0 
    elif x < 25: 
     return math.sin((2*math.pi/28)*x) 
    else: 
     return -1 
temp['UFrio'] = temp['TempC'].map(thingy) 

可能是你能拿出一個比啄一個更好的名字。沒有必要把所有這些都放入lambda。

0
temp['UFrio'] = temp['TempC'].map(lambda x: 0 if (x <0) else x) 
temp['UFrio'] = temp['TempC'].map(lambda x: math.sin((2*math.pi/28)*x) if (x<25) else -1) 

我把if語句中的兩個,因爲如果u但ELIF會犯錯誤所以這我的方式來處理這個問題,我希望它幫

+3

儘管這段代碼可以解決這個問題,[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code - 基於答案)真的有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – Junaid

相關問題