如何在SAS中基于正则匹配逻辑创建新标记列
基于正则匹配创建标记列的实现方案
实现思路
针对自由文本列,通过不区分大小写的正则匹配,判断每行是否包含目标内容,将结果存入新列作为标记。
Pandas 代码实现(处理大型数据集高效方案)
假设你的数据集已加载为 Pandas DataFrame df,目标文本列名为 text_col,要创建的标记列名为 contains_GnRH:
方法1:高效的矢量化操作(推荐用于大型数据集)
import pandas as pd # 读取数据集(替换为你的实际读取方式) df = pd.read_csv("your_large_dataset.csv") # 直接用str.contains实现不区分大小写匹配,na=False将缺失值标记为不匹配 df['contains_GnRH'] = df['text_col'].str.contains(r'GnRH', case=False, na=False)
方法2:自定义正则匹配(更灵活)
如果需要更复杂的正则逻辑,可先用re.compile预编译正则表达式:
import re # 预编译不区分大小写的正则模式 gnrh_pattern = re.compile(r'GnRH', re.IGNORECASE) # 用apply逐行判断(适合复杂正则,但大型数据集效率略低于矢量化方法) df['contains_GnRH'] = df['text_col'].apply(lambda x: bool(gnrh_pattern.search(str(x))))
自定义标记格式
如果需要用"匹配"/"不匹配"这类文本标记而非布尔值,可修改代码:
# 矢量化方式实现文本标记 df['contains_GnRH'] = df['text_col'].str.contains(r'GnRH', case=False, na=False).map({True: '匹配', False: '不匹配'})
内容的提问来源于stack exchange,提问作者jackahall
相关产品推荐
相关产品推荐

