[英]Scala Databricks: casting all bigint columns to double
我指的是这个问题: 在DataFrame中强制转换多个列
我有一个包含许多列的数据框。 不应触摸某些开头列(例如5),因为它们是ID,名称等。
从起第6列,我想如果它的数据类型投下列bigint
到double
数据类型。
目前,我正在使用:
val df2 = df.withColumn("col_name", df.col("col_name").cast(DataTypes.DoubleType))
对于每一列,这确实很耗时。
1-排除前5列,然后找到所有BigInt / Long类型的列
2-折叠BigInt列的列表,将其更改为Double
val df2 = df.schema.drop(5).collect{case c if c.dataType == DataTypes.LongType => c.name}.foldLeft(df){(acc, nxt) => acc.withColumn(nxt, acc.col(nxt).cast(DataTypes.DoubleType))}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.