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

如何在Pandas DataFrame中实现姓名列的精确匹配查询?

问题描述

我为DataFrame编写了如下搜索函数:

def search_for_name(name, data):
    print(name)
    dogs_with_name = data[data["HundenameText"].str.contains(name)]
    return dogs_with_name[["HundenameText", "GebDatHundJahr", "SexHundLang"]]

但该函数返回的记录超出预期,例如搜索"Luna"时会返回包含"Arina Luna"的记录。我仅需要精确匹配的结果,请问该如何实现?

解决方案

方法1:直接等值匹配

用==进行严格的等值判断,只返回列值与目标字符串完全一致的记录:

def search_for_name(name, data):
    print(name)
    dogs_with_name = data[data["HundenameText"] == name]
    return dogs_with_name[["HundenameText", "GebDatHundJahr", "SexHundLang"]]

方法2:正则精确匹配(支持大小写忽略)

如果需要忽略大小写差异(比如输入"luna"匹配数据中的"Luna"),可以用正则表达式的^(字符串开头)和$(字符串结尾)限定完全匹配范围:

import re

def search_for_name(name, data):
    print(name)
    dogs_with_name = data[data["HundenameText"].str.match(f'^{name}$', flags=re.IGNORECASE)]
    return dogs_with_name[["HundenameText", "GebDatHundJahr", "SexHundLang"]]

方法3:处理含前后空格的场景

如果数据中存在带前后空格的名称(比如" Luna "),可以先清理空格再做匹配:

def search_for_name(name, data):
    print(name)
    dogs_with_name = data[data["HundenameText"].str.strip() == name.strip()]
    return dogs_with_name[["HundenameText", "GebDatHundJahr", "SexHundLang"]]

内容的提问来源于stack exchange,提问作者luca köppel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:20:34