Python Spark-操作数据帧中的特定列值(删除字符)

Python Spark-操作数据帧中的特定列值(删除字符),python,apache-spark,pyspark,apache-spark-sql,spark-dataframe,Python,Apache Spark,Pyspark,Apache Spark Sql,Spark Dataframe,我使用spark csv读取文件并将其转换为数据帧。 特定列,我们称之为X,有一个值范围-0到2, 但是有些行有一个恼人的尾随;N我需要删除它 e、 g 我怎样才能用Spark做到这一点? 这对我来说是全新的。 我猜这涉及到一些“过滤器”的使用,但我无法解决它 DataFrame的加载方式如下,如果这是一个重要信息: import sys from pyspark import SparkContext from pyspark.sql import SQLContext, GroupedDat

我使用spark csv读取文件并将其转换为数据帧。 特定列,我们称之为X,有一个值范围-0到2, 但是有些行有一个恼人的尾随
;N我需要删除它

e、 g

我怎样才能用Spark做到这一点? 这对我来说是全新的。 我猜这涉及到一些“过滤器”的使用,但我无法解决它

DataFrame的加载方式如下,如果这是一个重要信息:

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我要删除的


谢谢

您可以执行以下操作

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

最后,我用以下方式将lambda函数与udf结合使用:
udf=UserDefinedFunction(lambda x:x[:1]如果len(x)>1 else x,StringType())df=df.withColumn('x',udf(df['x']).cast(IntegerType())
我也接受你的答案,谢谢
from pyspark.sql.functions import regexp_replace, col
log_df.withColumn("X",regexp_replace(col("X"), ";N", "")).show()