提问人:mouli lee 提问时间:11/16/2023 最后编辑:Aswinmouli lee 更新时间:11/16/2023 访问量:104
按顺序从数组列中获取非重复行 pyspark
Get Non repeating rows from an array column in sequential order pyspark
问:
我有一个包含 2 列的 pyspark 数据帧。Column1 是整数列,Column2 是 ArrayType。我需要获取一个数据帧,该 Column2 的前几行中没有任何重复元素。在 Column2 中,如果行中的某个元素在前面的任何行中重复,则应忽略整行。
请考虑下面的 DataFrame,在第 3 行中,第 39 行是一个重复元素,因此应忽略整行。
预期结果数据帧
我尝试使用分解数组列和窗口函数来删除重复项。但它并没有给出预期的结果。
答:
0赞
partlov
11/16/2023
#1
尝试自行联接此数据帧并列出应删除的所有 Column1 值。像这样的东西:
df_exploded = df.select(df.Column1, explode(df.Column2).alias("Column2"))
df_join1 = df_exploded.alias("df1")
df_join2 = df_exploded.alias("df2")
df_to_remove = (
df_join1
.join(
df_join2,
[df_join1.Column2 == df_join2.Column2, df_join1.Column1 > df_join2.Column2]
)
.select(df1.Column1)
.dropDuplicates()
)
df_final = df.join(df_to_remove, ["Column1"], "left_anti")
我没有运行此代码,因此可能存在一些问题,但这是想法。
评论
0赞
mouli lee
11/21/2023
但它并没有给出预期的输出
评论