如何从数据框列中删除小数部分?

时间:2018-06-29 06:46:10

标签: scala apache-spark dataframe

输入数据框:

val ds = Seq((1,34.44),
  (2,76.788),
  (3,54.822)).toDF("id","mark")

预期输出:

val ds = Seq((1,34),
  (2,76),
  (3,54)).toDF("id","mark")

我想如上所述从列标记中删除小数部分。我已经搜索了任何内置functions,但未找到任何内容。 udf 应该如何达到上述效果?

1 个答案:

答案 0 :(得分:0)

您可以使用castinteger作为

import org.apache.spark.sql.functions._
ds.withColumn("mark", $"mark".cast("integer")).show(false)

应该给您

+---+----+
|id |mark|
+---+----+
|1  |34  |
|2  |76  |
|3  |54  |
+---+----+

我希望答案会有所帮助

更新

您评论为

  

但是,如果该列中有任何字符串值,则由于我们将其转换为integer,该值将为null。我不想要这种行为

所以我想您的标记列必须为StringType(),并且您可以使用regexp_replace

import org.apache.spark.sql.functions._
ds.withColumn("mark", regexp_replace($"mark", "(\\.\\d+)", "")).show(false)