我有一个数据框,我想在其中基于值为非空的现有列创建一个新列。
现有列是小数,有些行是空的。我想用整数创建一个新列。
我正在使用 lambda,但不断收到语法错误。谁能告诉我出了什么问题?谢谢
df['new'] = df['old'].apply(lambda x: int(x) if x>=0)
我也试过:
df['new'] = df['old'].apply(lambda x: int(x) if x.isnull == False)
还有这个:
df['new'] = df['old'].apply(lambda x: x.astype(int) if x>=0)
语法错误指向最后一个右括号。
你有语法错误,因为你的lambda
函数不正确。具体来说,if ... else ...
条件表达式是错误的。条件表达式必须是
conditional_expression ::= or_test [“if” or_test “else” expression]
你漏掉了else
一部分。
我想提到的另一件事是,转换数据类型的优雅方式是使用astype
function。如果你想在某些条件下投射数据,你可以这样做:
new = df.loc[df.old>0].astype('int')
然后new
将成为您需要的系列。
谢谢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句