如何提取pandas列中匹配指定列表的词汇并生成对应新列
实现代码
import pandas as pd import numpy as np import re listing = ['test', 'big'] df = pd.DataFrame({'Title':['small test','huge Test', 'big','nothing', np.nan, 'a', 'b']}) # 构造Test_Flag列 df['Test_Flag'] = df['Title'].str.extract( pat=f'({"|".join(listing)})', flags=re.IGNORECASE, expand=False ).str.lower().fillna('') print(df)
代码说明
str.extract():从Title列的字符串中捕获符合正则规则的内容,flags=re.IGNORECASE实现不区分大小写匹配expand=False:指定返回Series格式,可直接赋值给新列str.lower():将捕获到的内容统一转为小写,和预定义listing的词汇格式保持一致fillna(''):将无匹配、原字段为NaN的结果统一替换为空字符串,符合输出要求
如果单条Title存在多个匹配词汇,上述代码默认返回第一个匹配项,如需返回所有匹配项可将str.extract替换为str.findall,再根据需要做格式调整
运行结果
Title Test_Flag 0 small test test 1 huge Test test 2 big big 3 nothing 4 NaN 5 a 6 b
内容的提问来源于stack exchange,提问作者Giacomo F
相关产品推荐
相关产品推荐

