Попробуйте использовать regular expressi
на 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|
#+---+---+---+---+