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

Python实现DataFrame中判断name是否存在于text的标识列

解决DataFrame新增match列的报错问题

报错原因

你当前代码的问题在于:pd.Series.str.contains() 要求传入单个可哈希的字符串(或正则表达式)作为匹配模式,但你直接传入了整个pd_05['name'] Series对象,而Series属于不可哈希类型,因此触发"unhashable type: 'Series'"错误。

修复方案

以下是几种实现需求的简便方法:

方法1:使用apply逐行判断

通过apply遍历每行数据,直接判断当前行的name值是否存在于text值中:

import pandas as pd

pd_05['match'] = pd_05.apply(lambda row: 1 if row['name'] in row['text'] else 0, axis=1)

方法2:使用列表推导式(效率更高)

对于大数据量的场景,列表推导式的执行速度通常优于apply:

pd_05['match'] = [1 if name in text else 0 for text, name in zip(pd_05['text'], pd_05['name'])]

补充说明

如果你的name列包含正则特殊字符(如*、.、+等),使用in进行字符串包含判断比str.contains更准确——因为str.contains会默认将模式当作正则表达式解析,可能导致意外的匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:24:53