Pandas DataFrame遍历行分词列表 删除指定词表词汇实现方法
pandas过滤列中词列表的指定停用词实现
场景说明
你的DataFrame中Q395_R列每一行对应一位受访者的分词结果,单元格存储值为词语列表;现有待移除词语列表words395,需要逐行遍历删除所有出现在待移除列表中的词语。
优化提示:开始处理前先把待移除词语列表转为
set集合类型,词语存在性判断的效率会比直接用列表高数十倍,数据量较大时收益非常明显。
方法1:两层嵌套循环实现(完全匹配逐行逐词遍历的需求)
如果需要明确写出两层遍历逻辑,直接用以下代码即可:
# 待移除词转集合,提升查找速度 remove_set = set(words395) # 第一层循环:遍历所有行 for row_idx in df.index: # 读取当前行的词列表 raw_words = df.loc[row_idx, 'Q395_R'] cleaned_words = [] # 第二层循环:遍历当前行的每个词 for word in raw_words: # 仅保留不在待移除列表里的词 if word not in remove_set: cleaned_words.append(word) # 将过滤后的结果写回原单元格 df.loc[row_idx, 'Q395_R'] = cleaned_words
方法2:简洁向量化实现(无显式循环,运行效率更高)
如果不需要强制写嵌套循环,用pandas的apply配合列表推导式,代码更简洁、运行速度更快:
remove_set = set(words395) df['Q395_R'] = df['Q395_R'].apply(lambda words: [w for w in words if w not in remove_set])
处理效果
两种方法实现的效果完全一致,都会得到你预期的结果:
- 原第一行的
accident、第二行的spending、第三行的understanding、第四行的le、第五行的spending都会被过滤掉,和你给出的预期样例完全匹配。
内容的提问来源于stack exchange,提问作者leahyota
相关产品推荐
相关产品推荐

