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

如何在Pandas中组合多个Lambda函数实现多列匹配条件的合并判断?

合并两个Lambda匹配判断的解决方案

嘿,这事儿超简单的!你完全可以用&运算符把两个判断逻辑合并成一行代码,一次性满足A列值在B列存在匹配和C列值在D列存在匹配两个条件。

直接实现代码

按照你原来的find+ge(0)的写法,合并后的代码是这样的:

df['match'] = df.apply(lambda x: x['B'].find(x['A']).ge(0) & x['D'].find(x['C']).ge(0), axis=1)

或者更直白的用>=0代替.ge(0),可读性也不错:

df['match'] = df.apply(lambda x: (x['B'].find(x['A']) >= 0) & (x['D'].find(x['C']) >= 0), axis=1)

给你提个效率优化建议

不过要注意:apply是逐行遍历的,当你的DataFrame数据量很大(比如十万行以上)时,这种写法效率会很低。我猜你大概率是想判断某列的单个值是否在另一列的所有值中存在(毕竟用randint生成的是整数,直接用find其实会报错,因为整数没有find方法),如果是这个需求,更高效的写法是用pandas的向量化操作isin:

# 先确保列是整数类型(你原来的生成逻辑就是整数),然后判断存在性
df['match'] = df['A'].isin(df['B']) & df['C'].isin(df['D'])

这个写法比apply快N倍,因为它是利用pandas的底层优化,避免了逐行循环的开销。

小补充

如果你的真实需求是同一行内,B字段(字符串类型)包含A字段的内容,那你需要先把整数列转成字符串:

df = df.astype(str)
# 再执行合并后的判断
df['match'] = df.apply(lambda x: (x['B'].find(x['A']) >= 0) & (x['D'].find(x['C']) >= 0), axis=1)

不然整数调用find方法会抛出AttributeError哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:32:52