从数组pyspark删除特殊字符

时间:2020-04-22 12:08:24

标签: pyspark

我有一个pyspark数据框,其中包含一串字符串。

df示例:

*******5214

我要删除字符public String getMaskedValue(String value) { String maskedRes = ""; if (value!=null && !value.isEmpty()) { maskedRes = value.trim(); if (maskedRes.length() <= 5) { return maskedRes.replaceAll(value, "$1*"); } else if (value.length() == 11) { return maskedRes.replace(value.substring(0, 7), "$1*"); } } return maskedRes; }

我尝试使用number | id --------------- 12 | [12, .AZ, .UI] ------------------------ 14 | [CL, .RT, OP.]

'.'

但是我认为regexp_replace是字符串而不是数组的好解决方案。

如何从数组中删除此字符? 谢谢

1 个答案:

答案 0 :(得分:2)

在Spark 2.4或更高版本中,您可以使用transform

import pyspark.sql.functions as F
df.withColumn("id",F.expr("transform(id,x-> replace(x,'.',''))")).show()

+------+------------+
|number|          id|
+------+------------+
|    12|[12, AZ, UI]|
|    14|[CL, RT, OP]|
+------+------------+

工作示例:

enter image description here