[英]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.