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

Python pandas的lambda函数中是否可以使用OR逻辑运算符?

问题解答

你编写的第二种写法不可行,存在逻辑判断错误,具体原因和正确实现方案如下:

错误原因

Python中逻辑运算符or的运算优先级低于in,且非空字符串的布尔值恒为True,你写的判断条件实际等价于:

if ('Issue:') or ("Root Cause:" in x):

因为'Issue:'永远为真,所以整个条件会永远成立,所有行的notes都会保留原值,不会触发NO_ISSUE的赋值逻辑,完全不符合需求。

正确实现方案

方案1:修正lambda条件写法(适合少量匹配规则)

把每个匹配规则都单独写完整的in判断即可,示例如下:

df['notes'] = df['notes'].apply(lambda x: x if 'Issue:' in x or 'Root Cause:' in x else "NO_ISSUE")

如果后续需要新增更多匹配关键词,继续用or拼接新关键词 in x格式的判断即可。

方案2:使用pandas向量化方法(更推荐,性能更高)

apply本质是逐行遍历,大数据集下性能很差,推荐使用pandas内置的str.contains方法结合where实现多条件匹配,多关键词直接用正则符号|分隔即可,写法更简洁,性能也远高于apply:

df['notes'] = df['notes'].where(df['notes'].str.contains(r'Issue:|Root Cause:'), 'NO_ISSUE')

如果列中存在空值需要避免报错,可以新增na=False参数:

df['notes'] = df['notes'].where(df['notes'].str.contains(r'Issue:|Root Cause:', na=False), 'NO_ISSUE')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:06:01