簡體   English   中英

將文本預處理函數應用於 scala spark 中的數據框列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM