使用pyspark dataframe从列名中删除特殊字符

使用pyspark dataframe从列名中删除特殊字符,pyspark,apache-spark-sql,pyspark-dataframes,Pyspark,Apache Spark Sql,Pyspark Dataframes,我正在尝试使用pyspark sql读取csv文件,大多数列名将具有特殊字符。我想使用pyspark dataframe删除所有列名中的特殊字符。是否有任何特定函数可用于同时删除所有列名中的特殊字符?感谢您的回复。尝试在替换上使用常规表达式I替换所有特殊字符,然后使用.toDF() df=spark.createDataFrame([('a','b','v','d')],['._a','/b','c ','d(']) import re cols=[re.sub("(_|\.|\(|\

我正在尝试使用pyspark sql读取csv文件,大多数列名将具有特殊字符。我想使用pyspark dataframe删除所有列名中的特殊字符。是否有任何特定函数可用于同时删除所有列名中的特殊字符?感谢您的回复。

尝试在替换上使用
常规表达式I
替换所有特殊字符,然后使用
.toDF()

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|
#+---+---+---+---+
for i,j in zip(df.columns,cols):
    df=df.withColumnRenamed(i,j)

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

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|
#+---+---+---+---+
for i,j in zip(df.columns,cols):
    df=df.withColumnRenamed(i,j)

df.show()
#+---+---+---+---+
#|  a|  b| c |  d|
#+---+---+---+---+
#|  a|  b|  v|  d|
#+---+---+---+---+
使用.WithColumnRename():

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|
#+---+---+---+---+
for i,j in zip(df.columns,cols):
    df=df.withColumnRenamed(i,j)

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