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

Pandas如何匹配列表任意完整关键词为字符串列赋值布尔值

Pandas 多分隔符独立词汇匹配实现方案

核心逻辑

原isin方法仅支持单元格整值完全匹配,无法覆盖多词分隔场景。要实现独立词汇完整匹配,按以下逻辑处理即可:

  • 待匹配关键词转为集合结构,提升成员判断效率
  • 对properties列的字符串,以逗号、任意空白字符为分隔符拆分,过滤空值得到独立词汇列表
  • 拆分后的词汇与关键词集合存在交集则标记为True,否则为False

完整代码

import pandas as pd
import re

# 初始化数据
data = {
  "properties": ["FinancialOffice","Gas Station", "Office", "K-12 School", "Commercial, Office"],
}
df = pd.DataFrame(data)
proplist = ["Office","Other - Mall","Gym"]

prop_set = set(proplist)
df["flag"] = df["properties"].apply(
    lambda s: bool(prop_set & set(re.split(r"[,\s]+", s.strip())))
)

匹配结果

执行后输出结果完全符合规则要求:

propertiesflag
FinancialOfficeFalse
Gas StationFalse
OfficeTrue
K-12 SchoolFalse
Commercial, OfficeTrue

匹配规则校验:

  • 连写字符串FinancialOffice无分隔符,拆分后仅为自身,不会误识别子串Office,判定为不匹配
  • 逗号+空格分隔的Commercial, Office拆分后包含独立词汇Office,判定为匹配
  • 单值Office与关键词完全一致,判定为匹配

空值兼容处理

如果properties列存在空值(NaN/None),调整匹配逻辑即可避免报错:

df["flag"] = df["properties"].apply(
    lambda s: bool(prop_set & set(re.split(r"[,\s]+", str(s).strip()))) if pd.notna(s) else False
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:18:15