在pyspark中基于startwith函数转换列

时间:2019-07-09 13:26:12

标签: python pyspark

我有一个数据框列,其中包含这样的文本

UITableViewDataSource

我想对pyspark进行的操作是,如果我的col以'abc-'开头,然后仅以'abc'替换,如果它以'def_'开头,然后以def替换。

我想为此创建一个函数。我是python和pyspark的新手,因此需要帮助。

2 个答案:

答案 0 :(得分:1)

假设您的列名为col1,数据框为df,​​

df = df.withColumn('col1', regexp_replace(col('col1'), "^abc", "abc"))
df = df.withColumn('col1', regexp_replace(col('col1'), "^def", "def"))

您可以使用正则表达式(例如:Regular Expression to match string starting with "stop")将以'abc'或'def'开头的值替换为'def'。

答案 1 :(得分:1)

您可以为此使用pyspark regexp_replace,请参见下面的代码。

# This replaces all - and _
data = [(1,"abc-text1"), (2,"def_text1-")]
df = sqlContext.createDataFrame(data, ["a","b"])
dfe  = df.withColumn("b_1", F.regexp_replace(F.col("b"), "(-|_)", ""))