我试图迭代一个数据帧。我想用别人替换几个字符,除非我迭代的项目是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
我已尽力而为,并没有找出合成器出错的原因。有人可以帮忙吗?
答案 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')