gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:14:47 38 4
gpt4 key购买 nike

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

df1.printSchema

col1_term1: String
col2_term2: String
col3_term3: String

更改列类型的条件是,如果列名包含 term1,则将其更改为 int,如果列名包含 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)

关于scala - Spark DataFrame 根据列条件更改数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578823/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com