如何在Python Lambda表达式中实现多分支if-elif-else条件
解决Lambda多分支条件的写法问题
Lambda支持通过嵌套三元表达式实现多分支逻辑,只要遵循正确的嵌套语法就能实现你的需求。针对你的场景,修改后的代码如下:
df['AA'] = df['AA'].apply(lambda x: "Suppression" if x in (1, 61) else "Dont Suppress" if x == 90 else "对应内容" if x == 93 else "Check")
关键说明:
- 把
x==1 or x==61简化为x in (1,61),让代码更简洁易读 - 嵌套三元表达式要遵循
结果1 if 条件1 else 结果2 if 条件2 else ... else 默认结果的顺序,条件会从上到下依次判断
更推荐的替代方案(可读性更高)
如果后续还要增加更多分支,嵌套三元的可读性会快速下降,推荐两种更友好的写法:
1. 自定义函数配合apply
def get_aa_status(x): if x in (1, 61): return "Suppression" elif x == 90: return "Dont Suppress" elif x == 93: return "对应内容" else: return "Check" df['AA'] = df['AA'].apply(get_aa_status)
2. 使用numpy.select(批量判断效率更高)
import numpy as np conditions = [ df['AA'].isin([1, 61]), df['AA'] == 90, df['AA'] == 93 ] choices = [ "Suppression", "Dont Suppress", "对应内容" ] df['AA'] = np.select(conditions, choices, default="Check")
内容的提问来源于stack exchange,提问作者RomainInTheAnalysis
相关产品推荐
相关产品推荐

