删除pyspark中所有列名的空格

drnojrws  于 2023-03-17  发布在  Spark
关注(0)|答案(5)|浏览(195)

我是pySpark的新手。我收到了一个csv文件,其中有大约1000列。我使用的是数据库。这些列中的大多数之间有空格,如“总收入”,“总年龄”等。我需要更新所有的列名称与下划线'_'空格。
我试过这个

foreach(DataColumn c in cloned.Columns)
    c.ColumnName = String.Join("_", c.ColumnName.Split());

但在Pyspark的数据库里不管用。

huus2vyu

huus2vyu1#

我会将selectlist理解结合使用:

from pyspark.sql import functions as F

renamed_df = df.select([F.col(col).alias(col.replace(' ', '_')) for col in df.columns])
nuypyhwy

nuypyhwy2#

有两种方法可以删除列名中的空格:1.将数据导入spark数据框时使用架构:例如:

from pyspark.sql.types import StructType, StructField, IntegerType, StringType
Schema1 = StructType([StructField('field1', IntegerType(), True),
                     StructField('field2', StringType(), True),
                     StructField('field3', IntegerType(), True)])
df = spark.read.csv('/path/to/your/file.csv', header=True, schema=Schema1)

1.如果您已经将数据导入到 Dataframe 中,请使用dataframe.withColumnRenamed函数更改列的名称:
df=df. with列已重命名(“字段名称”,“字段名称”)

ymzxtsji

ymzxtsji3#

NewColumns=(column.replace(' ', 'any special character') for column in df.columns)
df = df.toDF(*NewColumns)
cdmah0mi

cdmah0mi4#

这个也行,我已经用了很长时间了,你只需要导入re就可以了。

import re 
schema1 = [re.sub("[^a-zA-Z0-9,]", "", i) for i in df1.columns] 
df2 = df1.toDF(*schema1)
vojdkbi0

vojdkbi05#

你可以使用strip函数来替换列中的前导和尾随空格.你可以使用

df = df.select([F.col(c).alias(c.strip()) for c in df.columns])

除了strip之外,您还可以使用lstrip或rstrip函数。

相关问题