如何从Spark数据框中的所有列中删除反斜杠? [英] How to remove backslash from all columns in a Spark dataframe?
问题描述
如何从Spark DF的多列中删除所有属于字符串的\
字符?
How can I remove all \
characters that are a part of strings from multiple columns in a spark DF?
示例行:
11~ADX\|0.00\|ZZ\|BP\|WHT~SE\|41\|0064~GE\|0001\
预期输出:
11~ADX|0.00|ZZ|BP|WHT~SE|41|0064~GE|0001
推荐答案
在数据框的所有列上使用foldLeft
,这样您就可以在每个单独的列上使用regexp_replace
并返回最终的数据框.使用问题中的示例数据框(以下称为df
),删除所有反斜杠:
Use foldLeft
on all columns in the dataframe, in this way you can use regexp_replace
on each separate column and return the final dataframe. Using the example dataframe in the question (called df
below), to remove all backslashes:
val df2 = df.columns.foldLeft(df)((df, c) => df.withColumn(c, regexp_replace(col(c), "\\\\", "")))
您还可以通过以下操作转义所有反斜杠:
You could also escape all backslashes with the following:
val df2 = df.columns.foldLeft(df)((df, c) => df.withColumn(c, regexp_replace(col(c), "\\\\", "\\\\\\\\")))
如果不应该使用所有列,请创建一个单独的变量,其中包含要使用的列.要使用除一列(下面的列col
)之外的所有所有列,请使用:
If not all columns should be used, create a separate variable containing the columns to use. To use all all columns except one (column col
below) use:
val cols = df.columns diff List("col")
cols.foldLeft ...
这篇关于如何从Spark数据框中的所有列中删除反斜杠?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!