首页 > 解决方案 > 使用 pyspark 数据框从列名中删除特殊字符

问题描述

我正在尝试使用 pyspark-sql 读取 csv 文件,大多数列名都有特殊字符。我想使用 pyspark 数据框删除所有列名中的特殊字符。是否有任何特定功能可用于删除特殊字符一次为所有列名?感谢您的回复。

标签: pysparkapache-spark-sqlpyspark-dataframes

解决方案


尝试使用regular expression replace 替换所有特殊字符,然后使用.toDF()

Example:

df=spark.createDataFrame([('a','b','v','d')],['._a','/b','c ','d('])
import re
cols=[re.sub("(_|\.|\(|\/)","",i) for i in df.columns]
df.toDF(*cols).show()
#+---+---+---+---+
#|  a|  b| c |  d|
#+---+---+---+---+
#|  a|  b|  v|  d|
#+---+---+---+---+

Using .withColumnRenamed():

for i,j in zip(df.columns,cols):
    df=df.withColumnRenamed(i,j)

df.show()
#+---+---+---+---+
#|  a|  b| c |  d|
#+---+---+---+---+
#|  a|  b|  v|  d|
#+---+---+---+---+

推荐阅读