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

如何更高效检查DataFrame中每个元素是否为指定字符串的子串?

更简洁的DataFrame元素子串匹配方案

假设有记录人员职业的DataFrame df,结构如下:

indexMaryTristanLouiseArnaudJustinStacy
0工程师软件工程师摇滚歌手说唱歌手伐木工生物医学工程师
1吉他手航空航天工程师作家Figherfighter
2商人

需求是检查每个职业是否是字符串 s = 'Software Engineer' 的子串,预期结果为:

indexMaryTristanLouiseArnaudJustinStacy
0TrueTrueFalseFalseFalseFalse
1FalseFalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalseFalse

原方案使用嵌套apply实现,但写法冗余,这里提供两种更简洁的优化方案:

方案1:使用applymap直接遍历所有元素

applymap()是Pandas专门用于对DataFrame每个元素执行函数的方法,无需嵌套遍历列和行,代码更简洁直观:

s = 'Software Engineer'
result_df = df.applymap(lambda x: str(x) in s)

该方法会自动处理DataFrame中的空值(空值转字符串后为'NaN',不会匹配目标字符串,符合预期结果)。

方案2:结合astype(str)与str.contains

先将整个DataFrame转为字符串类型,再利用Pandas的字符串方法str.contains批量匹配:

s = 'Software Engineer'
result_df = df.astype(str).apply(lambda col: col.str.contains(s))

这种方法适合需要复用字符串处理方法的场景,逻辑同样清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:05:15