1

私はファイルを読み込んでデータフレームに変換するためにspark-csvを使用しています。 特定の列、Xは、0〜2、つまり の値の範囲を持っていますが、いくつかの行は削除する必要がある厄介な末尾の;Nです。Spark - データフレーム内の特定の列の値を操作する(文字を削除する)

_________ 
| ID | X | 
|---------| 
| 1 | 0;N| 

Sparkでどうすればいいですか? これは私にとって初めてのことです。 私はそれには "フィルタ"の使用が関係していると思いますが、解決できませんでした。一部の行は、私が欲しい が他の;N後続ていながら、0-2の値を、持っていることを、私はテーブルを参照してくださいどこ

import sys 
from pyspark import SparkContext 
from pyspark.sql import SQLContext, GroupedData 
from pyspark.sql.types import * 

sys.path.append("$SPARK_HOME/python/lib") 

# Init steps 
sc = SparkContext('local') 
sc.setLogLevel("WARN") 
sqlContext = SQLContext(sc) 

print "Loading file... ", 
log_df = sqlContext.read.format('com.databricks.spark.csv').\ 
options(header='true', inferschema='true', delimiter='\t').\ 
load('/path/to/file.csv') # Load data file 
print "Done!" 

log_df.select('X').show(20, False) 

最後の行は次のとおりです。それは重要な情報だ場合

DATAFRAMEは、次のようにロードされ、削除する

ありがとうございました

答えて

2

あなたは以下のようにすることができます。

from pyspark.sql.functions import regexp_replace, col 
log_df.withColumn("X",regexp_replace(col("X"), ";N", "")).show() 
+0

私は次のようにして、UDFとラムダ関数を使用して終了: 'UDF = UserDefinedFunction(ラムダX:X [1] lenの場合(X)> 1の他のx、StringType()) df = df.withColumn( 'X'、udf(df ['X'])。キャスト(IntegerType())) ' 私もあなたの答えを受け入れるよ、ありがとう – Adiel

関連する問題