操作字符串如果字符串以特定字符开头pyspark

kfgdxczn  于 2023-01-12  发布在  Spark
关注(0)|答案(1)|浏览(211)

我有一个 Dataframe ,其中包含一列字符串:
| 色谱柱A|
| - ------|
| 编号AB-001 - 1 - 12345-A|
| 编号AB-001 - 1 - 12346-B|
| ABC012345B|
| ABC012346B|
在PySpark中,我想创建一个新列,如果前面有"AB-",新列将删除字符"AB-"并保留其余字符,否则字符串将保持不变。
预期输出:
| 色谱柱A|B栏|
| - ------|- ------|
| 编号AB-001 - 1 - 12345-A|电话001 - 1 - 12345-A|
| 编号AB-001 - 1 - 12346-B|电话001 - 1 - 12346-B|
| ABC012345B|ABC012345B|
| ABC012346B|ABC012346B|

jogvjijk

jogvjijk1#

希望这对你有用

from pyspark.sql.functions import *
df = df.withColumn("col_b",when(col("col_a").startswith("AB-") , split(col("col_a"),"AB-").getItem(1)).otherwise(col("col_a")))
df.show()

产出

+----------------+-------------+
|           col_a|        col_b|
+----------------+-------------+
|AB-001-1-12345-A|001-1-12345-A|
|AB-001-1-12346-B|001-1-12346-B|
|      ABC012345B|   ABC012345B|
|      ABC012346B|   ABC012346B|
+----------------+-------------+

请接受这个答案,如果这些对你来说很好的话。这样其他人就可以使用这个。

相关问题