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

Spark/Scala:移除列中指定值与重复分隔值并统计数量

在Scala中清理DataFrame的EngineType列:移除特定值与重复项

假设你已经有一个Spark DataFrame,结构如下:

+-----------------+----------------------------+
|Race_Track       |             EngineType     |
+----------------------------------------------+
|800-RDUO         |   881,652,EWQ,300x,652,PXZ |
+----------------------------------------------+

需要完成两个操作:移除指定值(比如EWQ),同时去掉重复的元素,最终得到:

+-----------------+----------------------------+
|Race_Track       |         EngineType         |
+----------------------------------------------+
|800-RDUO         |   881,300x,652,PXZ         |
+----------------------------------------------+

实现步骤

  1. 导入Spark SQL相关函数库
  2. 通过拆分字符串→过滤指定值→数组去重→重新拼接的流程处理目标列

完整代码示例

import org.apache.spark.sql.functions._
import spark.implicits._

// 模拟原始DataFrame
val df = Seq(
  ("800-RDUO", "881,652,EWQ,300x,652,PXZ")
).toDF("Race_Track", "EngineType")

// 定义需要移除的特定值
val excludeValue = "EWQ"

// 处理EngineType列
val cleanedDf = df.withColumn("EngineType", 
  split(col("EngineType"), ",") // 按逗号拆分字符串为数组
    .filter(_ =!= excludeValue) // 过滤掉指定值
    .distinct // 对数组内元素去重
    .mkString(",") // 将处理后的数组重新拼接为字符串
)

// 查看清理后的结果
cleanedDf.show(false)

代码细节说明

  • split(col("EngineType"), ","):把EngineType字段的字符串按逗号分割成字符串数组
  • filter(_ =!= excludeValue):剔除数组中等于目标排除值的元素
  • distinct:去除数组内的重复元素,保证每个值仅出现一次
  • mkString(","):将处理后的数组重新组合成逗号分隔的字符串

运行上述代码后,即可得到符合需求的清理后DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:20:39