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

如何在Pandas中检查字符串是否包含非完全匹配的子串

Pandas Series 子串匹配问题解决方案

你现有代码if ("something" in df2["Symptom"].values)的逻辑是判断Symptom列中是否存在完全等于something的元素,仅能实现精确匹配,自然无法识别子串包含的场景。

正确使用str.contains实现需求

str.contains是Pandas官方提供的Series子串匹配方法,返回和原Series长度一致的布尔序列,完全满足你按条件新增列的需求。

1. 按匹配结果新增列

如果需要为每行根据匹配结果返回对应文本,直接使用如下代码:

# 匹配到子串something时新列返回yes,否则返回no
df2['匹配结果'] = df2['Symptom'].str.contains('something', na=False).map({True: 'yes', False: 'no'})

常用参数说明:

  • na=False:原列存在空值NaN时直接返回False,避免空值引发逻辑异常,可根据实际需求调整
  • case=False:添加该参数可忽略大小写匹配
  • regex=False:如果要匹配的子串包含.、+、*、?等正则特殊字符,添加该参数可关闭正则解析,按普通字符串匹配

2. 判断整列是否存在任意匹配项

如果你只需要判断整列是否有至少一个元素包含指定子串,对应你原有打印yes/no的需求,修改后代码如下:

if df2["Symptom"].str.contains('something', na=False).any():
    print("yes")
else:
    print("no")

.any()方法会检查布尔序列中是否存在至少一个True,只要有一个元素匹配成功就会返回yes。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:04