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

如何在Pandas DataFrame中找出字符串包含的列表元素(无需循环)

无循环实现方案

可以用 Pandas 的字符串提取 + 映射功能直接实现,完全不需要循环:

import pandas as pd

df4 = pd.DataFrame({'col': ['foo abc', 'foobar xyz', 'bar32', 'baz 45']})
terms = ['foo', 'baz']

# 1. 构造正则表达式,捕获匹配的术语
pattern = f"({'|'.join(terms)})"
# 2. 提取每个字符串中第一个匹配的术语
df4['matched_term'] = df4['col'].str.extract(pattern, expand=False)
# 3. 创建术语到索引(从1开始)的映射字典
term_map = {term: idx+1 for idx, term in enumerate(terms)}
# 4. 映射得到最终结果,无匹配的自动转为NaN
df4['result'] = df4['matched_term'].map(term_map)

print(df4['result'])

输出结果:

0    1.0
1    1.0
2    NaN
3    2.0
Name: result, dtype: float64

关键说明

  • str.extract 会从字符串中提取第一个匹配的术语,没有匹配则返回 NaN
  • 用字典推导式快速生成术语和对应位置的映射,位置从1开始符合你的需求
  • 如果需要处理多个术语匹配的情况(比如一个字符串同时包含foo和baz),可以改用 str.findall 结合后续处理,但你的示例中每个字符串仅匹配一个术语,上面的代码足够用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:39:49