[英]Apply a text-preprocessing function to a dataframe column in scala spark
我想創建一個函數來處理我面臨的文本數據問題中的文本預處理。 我熟悉Python和pandas數據框,我解決問題的通常思路是使用一個函數,然后使用pandas apply方法將該函數應用於一列中的所有元素。 但是我不知道從哪里開始完成這個。
所以,我創建了兩個函數來處理替換。 問題是我不知道如何在此方法中放置多個替換。 我需要對三個單獨的數據幀進行大約 20 次替換,因此用這種方法解決它需要 60 行代碼。 有沒有辦法在單個函數中進行所有替換,然后將其應用於 Scala 中數據幀列中的所有元素?
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()
好吧,您可以簡單地將每個替換添加到前一個旁邊,如下所示:
def removeSpecials: String => String = _.replaceAll("$", " ").replaceAll("?", " ")
但是在這種替換字符相同的情況下,最好使用正則表達式來避免多個replaceAll
。
def removeSpecials: String => String = _.replaceAll("\\$|\\?", " ")
請注意, \\\\
用作轉義字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.