簡體   English   中英

如何在 scala/python 中將計算列添加到 dataframe?

[英]how to add a calculated column to a dataframe in scala/python?

首先,我是編程新手,只是在 azure 數據塊上玩的初學者。 目前,我有一個名為“df”的 dataframe(包含 50 多列和上百萬行的龐大數據集),我想根據其中現有的“時間戳”列向其中添加另一個計算列。

我對 SQL 很滿意,所以我將 DF 轉換為表格並嘗試使用

ALTER TABLE logdata 
ADD sli VARCHAR(255)

但我總是遇到錯誤(代碼是正確的,在 W3schools 上完美運行)如下

SQL 語句中的錯誤:ParseException:輸入“ALTER LOGDATA”(第 1 行,第 6 行)沒有可行的替代方法

所以,我正在嘗試使用 scala 或 python。 我的用例超出了巨大的 dataframe 'df' 我有一個名為 'timestamp' 的列(如 2019-04-18 07:31:45)。 我需要創建一個自定義列,該列僅獲取時間戳的“分鍾”部分並將其插入到 dataframe 的新創建列中。 我嘗試使用 withcolumn 和 lit 從其他用戶的建議,但沒有成功。 誰能幫我解決這個問題,請如何循環這個龐大的數據集?

使用 Dataframe 和分鍾sql function 的示例:

object timeTest {

  def main(args: Array[String]) : Unit = {

    val spark = SparkSession.builder().master("local[1]").getOrCreate()

    import org.apache.spark.sql.functions.minute

    val df = spark.createDataFrame(
      spark.sparkContext.parallelize(List(
        Row(1, Timestamp.valueOf("2015-12-02 03:04:00")),
        Row(2, Timestamp.valueOf("1999-01-01 01:45:20"))
      )), StructType(
        List(StructField("id", IntegerType, true),
          StructField("time", TimestampType, true)))
    )

    df.withColumn("min", minute(col("time"))).show()
  } 
}

它給:

+---+--------------------+---+
| id|                time|min|
+---+--------------------+---+
|  1|2015-12-02 03:04:...|  4|
|  2|1999-01-01 01:45:...| 45|
+---+--------------------+---+

暫無
暫無

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

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