AssertionError:col应该是Column

Mar*_*kus 11 python apache-spark apache-spark-sql pyspark

如何在PySpark中创建一个新列并使用今天的日期填充此列?

这是我试过的:

import datetime
now = datetime.datetime.now()
df = df.withColumn("date", str(now)[:10])
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

AssertionError:col应该是Column

hi-*_*zir 20

如何在PySpark中创建一个新列并使用今天的日期填充此列?

已有功能:

from pyspark.sql.functions import current_date

df.withColumn("date", current_date().cast("string"))
Run Code Online (Sandbox Code Playgroud)

AssertionError:col应该是Column

使用文字

from pyspark.sql.functions import lit

df.withColumn("date", lit(str(now)[:10]))
Run Code Online (Sandbox Code Playgroud)

  • 理解了为什么第一个例子不起作用,但不明白为什么第二个例子(点亮的那个)起作用。 (3认同)
  • @jason因为[`lit`返回`Column`](https://github.com/zero323/pyspark-stubs/blob/f5f2de1ea263fb08591cd327450c0dce14f9131d/third_party/3/pyspark/sql/functions.pyi#L186) (2认同)