[英]Add new column in DataFrame base on existing column
我有一個帶有datetime列的csv文件:“2011-05-02T04:52:09 + 00:00”。
我正在使用scala,文件被加載到spark DataFrame中,我可以使用jodas時間來解析日期:
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
val df = new SQLContext(sc).load("com.databricks.spark.csv", Map("path" -> "data.csv", "header" -> "true"))
val d = org.joda.time.format.DateTimeFormat.forPattern("yyyy-mm-dd'T'kk:mm:ssZ")
我想基於datetime字段創建新列以進行時間序列分析。
在DataFrame中,如何根據另一列的值創建列?
我注意到DataFrame具有以下功能:df.withColumn(“dt”,column),有沒有辦法根據現有列的值創建列?
謝謝
import org.apache.spark.sql.types.DateType
import org.apache.spark.sql.functions._
import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat
val d = DateTimeFormat.forPattern("yyyy-mm-dd'T'kk:mm:ssZ")
val dtFunc: (String => Date) = (arg1: String) => DateTime.parse(arg1, d).toDate
val x = df.withColumn("dt", callUDF(dtFunc, DateType, col("dt_string")))
callUDF
, col
作為import
節目包含在functions
中
該dt_string
內col("dt_string")
是您的DF,這要從轉變的起源列名。
或者,您可以將最后一個語句替換為:
val dtFunc2 = udf(dtFunc)
val x = df.withColumn("dt", dtFunc2(col("dt_string")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.