Python // Lambda:语法无效

时间:2017-06-23 00:27:05

标签: python lambda

我试图迭代一个数据帧。我想用别人替换几个字符,除非我迭代的项目是null / nan / NaN /等。

为此,我尝试使用以下这一行:

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

我已尽力而为,并没有找出合成器出错的原因。有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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需要else构造A if B else C。如果你想进行条件修改,可以使用else rstr,或者使用其他pandas / numpy逻辑来做不同的逻辑。

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