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

Pandas如何检查字符串中的每个单词是否存在于指定列表中

遍历拆分后艺人姓名列表的实现方案

你已经通过df["artist_name"].str.split()得到了每一行对应单词列表的Series,直接用apply方法对每个列表做遍历判断即可,示例如下:

# 提前定义好的常见姓名集合,示例:common_name_set = {"周杰伦", "李", "明", "Taylor", "Swift"}
# 需求:判断姓名所有单词都在集合内才判定为真实姓名
df["is_real_name"] = df["artist_name"].str.split().apply(
    lambda name_parts: all(part in common_name_set for part in name_parts)
)

apply会自动遍历每一行拆分得到的单词列表,lambda内的生成器会逐个校验单词是否属于预设集合:

  • 用all()表示所有单词都匹配时才返回True,适合要求姓名的姓氏、名字全部属于常见姓名的判断场景
  • 替换为any()表示只要有一个单词匹配就返回True,适合只要求姓氏/名字其中一项匹配的场景

如果存在大小写不匹配的问题,统一格式后再判断即可:

# 先把集合内所有元素转成小写
common_name_set = {x.lower() for x in common_name_set}
# 判断时统一转小写匹配
df["is_real_name"] = df["artist_name"].str.split().apply(
    lambda name_parts: all(part.lower() in common_name_set for part in name_parts)
)

如果需要提取所有匹配的单词,而非仅返回布尔值:

df["matched_parts"] = df["artist_name"].str.split().apply(
    lambda name_parts: [part for part in name_parts if part in common_name_set]
)
  • 提前清洗姓名中的特殊符号、后缀(如Jr.、III、点、多余空格),避免无效内容导致匹配失败
  • 百万级以上的数据集可以把列表遍历逻辑换成生成器,进一步降低内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:54:03