You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyspark文本分析:如何删除word列值属于停用词词典的对应行

PySpark 过滤停用词行的实现方案

核心逻辑

剔除word列值存在于停用词集合内的行,保留非停用词的行即可,以下是两种常用实现方式:


方法1:isin取反过滤(适合小规模停用词库)

直接调用PySpark内置的isin方法判断值是否在停用词列表中,取反后过滤,写法最简单:

from pyspark.sql import functions as F

# df为你的原始单词DataFrame,stopwords为你定义的停用词集合
filtered_df = df.filter(~F.col("word").isin(list(stopwords)))

# 执行后查看结果
filtered_df.show()

输出结果和你预期的一致:

+-------+
|  word |
+-------+
|   food|
|amazing|
|  great|
+-------+

方法2:左反连接过滤(适合万级以上大规模停用词库)

如果停用词数量非常多,用isin性能会下降,改用left_anti左反连接的方式性能更稳定:

# 先把停用词集合转为PySpark DataFrame
stopwords_df = spark.createDataFrame([(word,) for word in stopwords], schema=["word"])

# 左反连接:只保留左表中没有和右表停用词匹配上的行
filtered_df = df.join(stopwords_df, on="word", how="left_anti")

注意事项

  • isin方法不支持直接传入Python集合类型,需要先转成列表list(stopwords)再传入
  • 两种方法的输出结果完全一致,可根据停用词规模选择即可

内容的提问来源于stack exchange,提问作者NekoJel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:06:04