Pyspark如何在匹配后删除字符

2024-10-06 09:02:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有pyspark数据框,其中有一列是这样的。我想从字符串中删除/ccc

我在pyspark中尝试了一些东西,但没有任何效果。我需要UDF吗

/aaa/bbb/ccc

在python中,我本可以这样做

%python 
"/".join("aaa/bbb/ccc".split("/")[:-1])

我试着跟着。但是它会生成null

from pyspark.sql.functions import concat_ws, udf, col
def get_path(str):
  "/".join(str.split("/")[:-1])

getPathUDF = udf(lambda z:get_path(z),StringType())   
display(df.withColumn("Path", getPathUDF(col("col6"))))

Tags: 数据path字符串getcolpysparksplitjoin
1条回答
网友
1楼 · 发布于 2024-10-06 09:02:35

您可以使用regexp_extract并提取字符串中最后一个/之前的所有字符:

from pyspark.sql import functions as F

df=spark.createDataFrame([["/aaa/bbb/ccc"]], schema=["col"])
df.withColumn("extr", F.regexp_extract("col",r'(.+)(/.+)$',1 )).show()

输出:

+      +    +
|         col|    extr|
+      +    +
|/aaa/bbb/ccc|/aaa/bbb|
+      +    +

相关问题 更多 >