2017-06-23 106 views
0

我正在嘗試迭代數據框。我想替換一些字符,除非我正在迭代的項目是null/nan/NaN/etc。Python // Lambda:無效的語法

對於我正在嘗試使用下面這行:

lista['ultima_receita'] = lista['ultima_receita'].apply(lambda rstr: float(rstr.replace('.','').replace(',','.')[3:]) if pd.isnull(rstr) == False) 

但是它讓我得到一個無效synthax錯誤:

lista['ultima_receita'] = lista['ultima_receita'].apply(lambda rstr: float(rstr.replace('.','').replace(',','.')[3:]) if pd.isnull(rstr) == False) 
                                        ^
SyntaxError: invalid syntax 

我用盡了一切我可以和沒」找出合成物錯誤的原因。有人可以幫忙嗎?

回答

2

試着讓你的問題更簡單。 lambda的確是問題所在,所以這與熊貓無關。

>>> lambda rstr: float(rstr.replace('.','').replace(',','.')[3:]) if pd.isnull(rstr) == False 
SyntaxError: invalid syntax # At the end of 'False' above 

或更簡單:

>>> lambda x: "foo" if "bar" == False 
SyntaxError: invalid syntax 

這是因爲Python需要一個elseA if B else C建設。如果你想做一個條件修改,你可以製作這個else rstr,或者使用其他熊貓/ numpy邏輯來做不同的邏輯。

>>> func = lambda x: "foo" if "bar" in x else x 
>>> func("isobaric"), func("agnostic") 
('foo', 'agnostic')