我是pySpark的新手。我收到了一个csv文件,其中有大约1000列。我使用的是数据库。这些列中的大多数之间有空格,如“总收入”,“总年龄”等。我需要更新所有的列名称与下划线'_'空格。我试过这个
foreach(DataColumn c in cloned.Columns) c.ColumnName = String.Join("_", c.ColumnName.Split());
但在Pyspark的数据库里不管用。
huus2vyu1#
我会将select与list理解结合使用:
select
list
from pyspark.sql import functions as F renamed_df = df.select([F.col(col).alias(col.replace(' ', '_')) for col in df.columns])
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列已重命名(“字段名称”,“字段名称”)
ymzxtsji3#
NewColumns=(column.replace(' ', 'any special character') for column in df.columns) df = df.toDF(*NewColumns)
cdmah0mi4#
这个也行,我已经用了很长时间了,你只需要导入re就可以了。
import re schema1 = [re.sub("[^a-zA-Z0-9,]", "", i) for i in df1.columns] df2 = df1.toDF(*schema1)
vojdkbi05#
你可以使用strip函数来替换列中的前导和尾随空格.你可以使用
df = df.select([F.col(c).alias(c.strip()) for c in df.columns])
除了strip之外,您还可以使用lstrip或rstrip函数。
5条答案
按热度按时间huus2vyu1#
我会将
select
与list
理解结合使用:nuypyhwy2#
有两种方法可以删除列名中的空格:1.将数据导入spark数据框时使用架构:例如:
1.如果您已经将数据导入到 Dataframe 中,请使用dataframe.withColumnRenamed函数更改列的名称:
df=df. with列已重命名(“字段名称”,“字段名称”)
ymzxtsji3#
cdmah0mi4#
这个也行,我已经用了很长时间了,你只需要导入re就可以了。
vojdkbi05#
你可以使用strip函数来替换列中的前导和尾随空格.你可以使用
除了strip之外,您还可以使用lstrip或rstrip函数。