Python中使用apply+Lambda创建DataFrame条件列时语法错误求助
问题解决:Lambda条件表达式语法错误
你的代码抛出syntax error是因为Python的三元条件表达式必须同时包含if和else分支,你只定义了满足条件时的返回值,没有指定不满足条件时的返回逻辑,这违反了语法规则。
修复后的代码示例
如果不满足total_bill < 10时,你希望返回原total_bill值,可以这样写:
df['expens'] = df.apply(lambda z: z['total_bill'] * 2 if z['total_bill'] < 10 else z['total_bill'], axis=1)
如果不满足条件时想返回空值(NaN),可以用:
import numpy as np df['expens'] = df.apply(lambda z: z['total_bill'] * 2 if z['total_bill'] < 10 else np.nan, axis=1)
更高效的替代方案
apply逐行遍历的效率较低,对于这种简单的列操作,推荐使用向量化运算,速度会快很多:
# 用numpy.where实现 import numpy as np df['expens'] = np.where(df['total_bill'] < 10, df['total_bill'] * 2, df['total_bill']) # 或者直接用布尔索引 df['expens'] = df['total_bill'].copy() df.loc[df['total_bill'] < 10, 'expens'] *= 2
内容的提问来源于stack exchange,提问作者BennoDominic
相关产品推荐
相关产品推荐

