如何在PySpark大型DataFrame中移除Column2值不在Column1中的行
在PySpark中移除Column2值不在Column1中的行
针对大型PySpark DataFrame,要移除其中Column2值不在Column1范围内的行,可按以下方式处理:
实现方案
- 先提取
Column1的所有唯一值,减少后续连接操作的数据量,提升处理效率:
ids = df.select("column1").distinct()
- 通过**左半连接(left_semi)**筛选出需要保留的行(左半连接会返回左表中在右表有匹配的行,正好对应保留
Column2值存在于Column1中的行,也就是移除不在范围内的行),注意要指定正确的关联条件:
filtered_df = df.join(ids, df.column2 == ids.column1, how="left_semi")
如果你的需求是反过来——保留Column2值不在Column1中的行,就改用左反连接(left_anti):
filtered_df = df.join(ids, df.column2 == ids.column1, how="left_anti")
内容的提问来源于stack exchange,提问作者upabove
相关产品推荐
相关产品推荐

