Exp*_*rer 4 csv apache-spark pyspark
我想使用 PySpark 从 csv 数据中删除特定的(例如@、&)特殊字符。我经历了 optimuspyspark( https://github.com/ironmussa/Optimus )。但是,它正在删除所有特殊字符。我想使用 Spark 从 CSV 数据中删除特定的特殊字符。是否有任何内置函数或自定义函数或第三方库来实现此功能。提前致谢。
我试过的几个链接:
https://community.hortonworks.com/questions/49802/escaping-double-quotes-in-spark-dataframe.html
希望这是您正在寻找的:
假设您有一个简单的 csv 文件(2 行),如下所示:
@A 234, 'B' 225, 'C' !556
@D 235, 'E' 2256, 'F'! 557
Run Code Online (Sandbox Code Playgroud)
将 csv 读入数据帧:
df=spark.read.csv('test1.csv',mode="DROPMALFORMED",\
inferSchema=True,\
header = False)
df.show()
+------+---------+---------+
| _c0| _c1| _c2|
+------+---------+---------+
|@A 234| 'B' 225| 'C' !556|
|@D 235| 'E' 2256| 'F'! 557|
+------+---------+---------+
Run Code Online (Sandbox Code Playgroud)
使用 pyspark 函数删除特定的不需要的字符
from pyspark.sql.functions import *
newDf = df.withColumn('_c0', regexp_replace('_c0', '@', ''))\
.withColumn('_c1', regexp_replace('_c1', "'", ''))\
.withColumn('_c2', regexp_replace('_c2', '!', ''))
newDf.show()
+-----+-------+--------+
| _c0| _c1| _c2|
+-----+-------+--------+
|A 234| B 225| 'C' 556|
|D 235| E 2256| 'F' 557|
+-----+-------+--------+
Run Code Online (Sandbox Code Playgroud)
如果要从所有列中删除特定字符,请尝试以下操作:
从与上面相同的简化文本文件/数据帧开始:
+------+---------+---------+
| _c0| _c1| _c2|
+------+---------+---------+
|@A 234| 'B' 225| 'C' !556|
|@D 235| 'E' 2256| 'F'! 557|
+------+---------+---------+
Run Code Online (Sandbox Code Playgroud)
从数据框中的列中删除字符的函数:
def cleanColumn(tmpdf,colName,findChar,replaceChar):
tmpdf = tmpdf.withColumn(colName, regexp_replace(colName, findChar, replaceChar))
return tmpdf
Run Code Online (Sandbox Code Playgroud)
从df 中的所有列中删除“'”字符(替换为空,即“”)
allColNames = df.schema.names
charToRemove= "'"
replaceWith =""
for colName in allColNames:
df=cleanColumn(df,colName,charToRemove,replaceWith)
Run Code Online (Sandbox Code Playgroud)
结果输出是:
df.show()
+------+-------+-------+
| _c0| _c1| _c2|
+------+-------+-------+
|@A 234| B 225| C !556|
|@D 235| E 2256| F! 557|
+------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9557 次 |
| 最近记录: |