You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:55:13