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

Python Pandas使用带if的lambda调用apply报Invalid syntax语法错误

问题原因说明

这个语法错误和Pandas的apply方法完全无关,是Python单行条件表达式(三元运算符)的语法规则导致的:

  • Python中A if 条件 else B是完整的三元表达式语法,必须同时包含if和else分支,你当前的代码只写了条件成立时的执行逻辑,缺少了条件不成立时的返回值定义,所以会触发Invalid syntax报错,不管是不是在apply的lambda里写这种结构都会报错。
修正代码

你只需要补全else分支,条件不匹配时直接返回原值即可:

for column in list2:
    print(column[-1])
    data[f'{column}'] = data[f'{column}'].apply(lambda x: str(x).replace('.','').replace('M','0000000') if x[-1] == 'M' else x)
    data[f'{column}'] = data[f'{column}'].apply(lambda x: str(x).replace('.','').replace('B','0000000000') if x[-1] == 'B' else x)
可选优化方案

你可以把两个判断逻辑合并到同一个处理函数里,不用对同一列做两次apply操作,执行效率更高:

for column in list2:
    print(column[-1])
    def convert_unit(x):
        s = str(x)
        if s.endswith('M'):
            return s.replace('.','').replace('M','0000000')
        elif s.endswith('B'):
            return s.replace('.','').replace('B','0000000000')
        return x
    data[f'{column}'] = data[f'{column}'].apply(convert_unit)

内容的提问来源于stack exchange,提问作者user15464793

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:18:03