Pandas中apply多条件if-else语法错误排查求助
问题分析与修正方案
你的代码存在两个关键语法错误,导致触发SyntaxError:
字符串方法调用错误
endswith是Python字符串的实例方法,必须通过目标字符串对象调用,原代码里x == endswith('Rural')的写法完全错误——既不需要用==做判断,也不能直接调用endswith而不绑定到字符串对象。正确的写法是x.endswith('Rural'),该方法会直接返回布尔值用于条件判断。三元表达式语法不完整
Python的三元表达式结构是结果1 if 条件1 else 结果2,链式嵌套的三元表达式需要保持完整的if-else逻辑链。原代码中第一个if后面没有对应的else就直接写第二个三元表达式,导致语法结构断裂。
修正后的代码
链式三元表达式写法
data['lga_code'] = data['lga'].apply(lambda x: 'Rural' if x.endswith('Rural') else 'Urban' if x.endswith('Urban') else 'other')
更易读的函数写法(推荐处理复杂逻辑时使用)
def classify_lga(x): if x.endswith('Rural'): return 'Rural' elif x.endswith('Urban'): return 'Urban' else: return 'other' data['lga_code'] = data['lga'].apply(classify_lga)
另外,data.loc[:,'lga']可以简化为data['lga'],两者功能完全一致,后者更简洁。
内容的提问来源于stack exchange,提问作者DatBigD
相关产品推荐
相关产品推荐

