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
相关产品推荐
相关产品推荐

