【发布时间】:2020-08-06 06:11:40
【问题描述】:
我正在尝试使用 pyspark-sql 读取 csv 文件,大多数列名都有特殊字符。我想使用 pyspark 数据框删除所有列名中的特殊字符。是否有任何特定功能可用于一次删除所有列名的特殊字符?感谢您的回复。
【问题讨论】:
标签: pyspark apache-spark-sql pyspark-dataframes
我正在尝试使用 pyspark-sql 读取 csv 文件,大多数列名都有特殊字符。我想使用 pyspark 数据框删除所有列名中的特殊字符。是否有任何特定功能可用于一次删除所有列名的特殊字符?感谢您的回复。
【问题讨论】:
标签: pyspark apache-spark-sql pyspark-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|
#+---+---+---+---+
【讨论】: