1

我正在使用spark-csv讀取文件並將其轉換爲數據幀。 具體的列,我們稱之爲X,具有一個值範圍 - 0到2, ,但某些行有一個惱人的尾部;N,我需要刪除它。Spark - 操作數據框中的特定列值(刪除字符)

例如

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

我該怎麼用Spark做到這一點? 這對我來說都是新的。 我猜它涉及到一些使用「過濾器」,但我無法解決它。

據幀被載入如下,如果這是一個重要的信息:

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) 

最後一行是在那裏我看到一個表中的某些行確實有0-2值, 而其他已經尾隨;N,我想刪除

謝謝

回答

2

你可以做下面的事情。

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

我最終使用lambda函數與以下列方式UDF: 'UDF = UserDefinedFunction(拉姆達X:X [:1]如果len(X)> 1否則x,StringType()) df = df.withColumn('X',udf(df ['X'])。cast(IntegerType())) 我也接受你的回答,謝謝 – Adiel

相關問題