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

如何在Pyspark DataFrame中查找同一行内的重复值

实现代码

首先导入依赖函数:

from pyspark.sql import functions as F

如果需要构造示例测试数据,可以用如下代码:

data = [
    (1, 0, 1),
    (4, 0, 4),
    (3, 3, 4),
    (4, 2, 2)
]
df = spark.createDataFrame(data, schema=["val1", "val2", "val3"])

核心逻辑:新增dup列,筛选每行中出现次数≥2的元素:

df = df.withColumn("dup", F.expr("""
    filter(
        array(val1, val2, val3),
        x -> size(filter(array(val1, val2, val3), y -> y = x)) >= 2
    )[0]
"""))

执行df.show()即可得到目标结果:

+----+----+----+---+
|val1|val2|val3|dup|
+----+----+----+---+
|   1|   0|   1|  1|
|   4|   0|   4|  4|
|   3|   3|   4|  3|
|   4|   2|   2|  2|
+----+----+----+---+

逻辑说明

  • 先把每行的val1、val2、val3三个字段拼接为一个数组
  • 遍历数组中的每个元素,统计该元素在当前行数组中出现的次数
  • 筛选出出现次数≥2的元素,取第一个作为dup列的取值
    如果你的场景中存在同一行有多个不同重复值的情况,可以调整输出规则,比如把所有重复值拼接为数组返回即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:24:04