使用pyspark dataframe从列名中删除特殊字符
我正在尝试使用pyspark sql读取csv文件,大多数列名将具有特殊字符。我想使用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("(_|\.|\(|\
常规表达式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|
#+---+---+---+---+