簡體   English   中英

在現有列的DataFrame中添加新列

[英]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")))

callUDFcol作為import節目包含在functions

dt_stringcol("dt_string")是您的DF,這要從轉變的起源列名。

或者,您可以將最后一個語句替換為:

val dtFunc2 = udf(dtFunc)
val x = df.withColumn("dt", dtFunc2(col("dt_string")))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM