Spark DataFrame根据列条件更改数据类型

unk1102

我有一个大约1000列的所有String类型列的Spark DataFrame df1。现在我想根据列名的条件将df1的column'类型从字符串转换为其他类型,例如double,int等。例如,假设df1只有三列字符串类型

df1.printSchema

col1_term1: String
col2_term2: String 
col3_term3: String

更改列类型的条件是,如果col名称包含term1,则将其更改为int;如果col名称包含term2,则将其更改为double,依此类推。我是Spark的新手。

智慧

您可以简单地映射到列,然后根据列名将列强制转换为适当的数据类型:

import org.apache.spark.sql.types._

val df = Seq(("1", "2", "3"), ("2", "3", "4")).toDF("col1_term1", "col2_term2", "col3_term3")

val cols = df.columns.map(x => {
    if (x.contains("term1")) col(x).cast(IntegerType) 
    else if (x.contains("term2")) col(x).cast(DoubleType) 
    else col(x)
})

df.select(cols: _*).printSchema
root
 |-- col1_term1: integer (nullable = true)
 |-- col2_term2: double (nullable = true)
 |-- col3_term3: string (nullable = true)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spark SQL根据列数据类型有条件地选择列

在Scala Spark中按架构更改数据帧的数据类型

Python Spark将DataFrame列数据类型更改为int错误

PySpark 如何遍历 Dataframe 列并更改数据类型?

更改数据帧中的列值 spark scala

在Spark Dataframe中将字符串数据类型列转换为MapType

使用Spark JDBC时DataFrame列的自定义数据类型

根据列数据类型对 spark 数据帧(在 sparklyr 中)进行子集化的最佳方法是什么

在Scala Spark中按数据类型删除列

根据条件分割Spark DataFrame

根据具有R中匹配列的模板更改数据框列的数据类型

使用 Apache Spark 更改数据捕获

Spark 内置类型的 Spark 数据类型相等问题

根据列的原始数据类型更改 Pandas Dataframe 中列的数据类型

Spark DataFrame - 如何根据条件对数据进行分区

Apache Spark SQL BLOB数据类型

Spark获取嵌套对象的数据类型

从Spark到Snowflake数据类型

根据条件组合Spark dataframe列中的多行

根据特定条件修改 Spark 数据框中的列

Spark Dataframe更改列值

在Scala Spark中以编程方式将所有特定的数据类型列转换为其他数据类型

使用动态列数更改数据框行值 spark scala

根据条件从 Spark DataFrame 中选择行

迭代地更改列类型Spark数据框

在Spark中将json字符串的数据类型更改为Datetime

在索引spark-shell / scala上更改Array [StructField]中的数据类型

Spark Dataframe udf中的元组应使用哪种数据类型?

使用嵌套的用户数据类型保存Spark DataFrame