如何使用Python pandas查找含指定关键词的文本并从数据集中移除对应行
Pandas 筛选关键词并删除对应行实现方案
你原有代码存在两处问题:
str.match()为从字符串起始位置匹配,若要匹配字段任意位置包含目标内容的行,需改用str.contains()drop()方法不能直接传入筛选得到的DataFrame对象,需要传入匹配行的索引值
完整实现代码
1. 构造匹配规则(同步处理空值避免报错)
# 匹配规则可根据需求调整:示例为Aspect列包含product quality、且Sentence列包含指定关键词 # 如果仅需要筛选Review列的关键词,修改对应的列名和匹配规则即可 mask = ( data['Aspect'].str.contains("product quality", na=False) & data['Sentence'].str.contains("nice|good|great|best", na=False) )
2. 提取匹配到的完整评论文本行
# 得到所有符合条件的完整行数据 matched_data = data[mask] # 如果仅需要提取评论文本内容,使用下行即可 # matched_reviews = data.loc[mask, 'Sentence']
3. 从原数据集删除匹配行
两种实现方式二选一即可:
- 方法1:使用drop方法删除
data.drop(matched_data.index, inplace=True)
- 方法2:直接取反筛选赋值,写法更简洁
data = data[~mask]
可选参数说明
- 如需不区分大小写匹配关键词,可在
str.contains()中添加case=False参数 - 如果关键词包含特殊正则符号,可添加
regex=False参数关闭正则匹配
内容的提问来源于stack exchange,提问作者Ashish Jaimon
相关产品推荐
相关产品推荐

