我想创建一个函数来处理文本数据所面临的问题中的文本处理。我熟悉Python和pandas数据框,解决该问题的通常思路是使用函数,然后使用pandas apply方法将函数应用于列中的所有元素。但是我不知道从哪里开始完成这项工作。
因此,我创建了两个函数来处理替换。问题是我不知道如何在此方法中放置多个替换项。我需要对三个单独的数据框进行约20次替换,因此使用这种方法解决该问题将需要60行代码。有没有办法在单个函数中进行所有替换,然后将其应用于scala的dataframe列中的所有元素?
def removeSpecials: String => String = _.replaceAll("$", " ")
def removeSpecials2: String => String = _.replaceAll("?", " ")
val udf_removeSpecials = udf(removeSpecials)
val udf_removeSpecials2 = udf(removeSpecials2)
val consolidated2 = consolidated.withColumn("product_description", udf_removeSpecials($"product_description"))
val consolidated3 = consolidated2.withColumn("product_description", udf_removeSpecials2($"product_description"))
consolidated3.show()
答案 0 :(得分:1)
好吧,您可以像这样简单地将每个替换项添加到上一个替换项旁边:
def removeSpecials: String => String = _.replaceAll("$", " ").replaceAll("?", " ")
但是在这种情况下,替换字符相同,最好使用正则表达式来避免多个replaceAll
。
def removeSpecials: String => String = _.replaceAll("\\$|\\?", " ")
请注意,\\
被用作转义字符。