2017-03-09 10 views
0

を特殊文字を削除する:私は次のようなデータセットを持っているデータフレームの列から

! Hello World. 1 
" Hi there. 0 

私が何をしたいのか、ちょうどから(各行の先頭からすべての特殊文字を削除することです残りの特殊文字ではありません)。データを読み出すために

(タブ区切り)私は、次のコードを使用します。私はreplaceAll()を使用する必要があることを承知していますが、私はそれを行う方法はかなりわからない

val data = sparkSession.read.format("com.databricks.spark.csv") 
    .option("delimiter", "\t") 
    .load("data.txt") 

val columns = Seq("text", "class") 
val df = data.toDF(columns: _*) 

を。

答えて

1

あなたがudfを作成し、主要な特殊文字を削除するために、データフレームの最初の列に適用することができます

val df = Seq(("! Hello World.", 1), ("\" Hi there.", 0)).toDF("text", "class") 

df.show 
+--------------+-----+ 
|   text|class| 
+--------------+-----+ 
|! Hello World.| 1| 
| " Hi there.| 0| 
+--------------+-----+  


import org.apache.spark.sql.functions.udf 
                 ^
// remove leading non-word characters from a string 
def remove_leading: String => String = _.replaceAll("^\\W+", "")  
val udf_remove = udf(remove_leading) 

df.withColumn("text", udf_remove($"text")).show 
+------------+-----+ 
|  text|class| 
+------------+-----+ 
|Hello World.| 1| 
| Hi there.| 0| 
+------------+-----+ 
0

は、それが

val str = " some string " 
str.trim 

を助けたり、文字列を持つすべての有用なOPSを見つけることができますフロント

val ignoreable = ", \t\r\n" 
str.dropWhile(c => ignorable.indexOf(c) >= 0) 

から

str.stripPrefix(",").stripSuffix(",").trim 

または一部の文字を削除し、いくつかの特定の文字をトリミングしますかもしれませat

関連する問題