Python语法错误:if表达式后缺失else,lambda多条件判断报错求助
问题分析与解决
错误原因
你的代码存在两个问题:
- 语法错误:Python三元表达式的正确结构是
结果1 if 条件 else 结果2,嵌套时每个if必须对应一个else。原代码中c >=0后直接接第二个if,没有闭合第一个if的else分支,触发SyntaxError。 - 逻辑错误:原条件
c >=0会把c==0的情况也归类为'pos',不符合你将0设为中性('neu')的需求。
修正方案
方案1:修正嵌套三元表达式
df['comp_score'] = df['compound'].apply(lambda c: 'pos' if c > 0 else 'neu' if c == 0 else 'neg') df.head()
将第一个条件改为c > 0,确保c==0时进入中性分支,同时补全第一个if对应的else,修复语法问题。
方案2:使用自定义函数(可读性更强)
如果嵌套三元表达式显得复杂,推荐用普通函数替代,逻辑更清晰:
def get_sentiment_score(compound): if compound > 0: return 'pos' elif compound == 0: return 'neu' else: return 'neg' df['comp_score'] = df['compound'].apply(get_sentiment_score) df.head()
内容的提问来源于stack exchange,提问作者Diah Rahmalenia
相关产品推荐
相关产品推荐

