我有一个Scala的列名列表,例如:
var cols = List("col1", "col2", "col3","col4")
我有一个数据框,其中所有列都是字符串。现在我想通过迭代数据框的列列表或列来转换数据框的列,因为我的列列表非常大,我无法承受使用太多的
.withColumn
参数。提前感谢。
我有一个Scala的列名列表,例如:
var cols = List("col1", "col2", "col3","col4")
.withColumn
参数。val df = sc.parallelize(Seq(
("foo", "1.0", "2", "true"),
("bar", "-1.0", "5", "false")
)).toDF("v", "x", "y", "z")
val types = Seq(
("v", "string"), ("x", "double"), ("y", "bigint"), ("z", "boolean")
)
df.select(types.map{case (c, t) => col(c).cast(t)}: _*)
如果您想要将特定类型的多个列更改为另一种类型而不指定单个列名,则可以使用以下方法。我在这里发布了我的答案 https://dev59.com/CF0b5IYBdhLWcg3wR_je#60552157