pyspark-date\u基于固定日期添加并从其他列获取增量

tvz2xvvm  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(294)

我需要加上日期1960-01-01天,以获得真正的日期值。基于此,我尝试通过以下方式实现:

df_immigration_new = df_immigration\
    .withColumn('depdate2', F.col('depdate').cast(T.IntegerType()))\
    .withColumn('depdate', F.date_add(F.to_date('1960-01-01'), F.col('depdate2')))\
    .show(n=1, truncate=False)

但它给了我一个例外: TypeError: Column is not iterable .
如果我改变 F.col('depdate2') 对于整数值,它可以工作,但我不知道如何使用列而不是固定值。

r7xajy2e

r7xajy2e1#

使用 F.date_add() 第一个参数应为日期,第二个参数应为整数,表示要添加到日期的天数。
您可以使用sql表达式实现所需的功能:

df.withColumn("new_Date", F.expr("date_add(to_date('1960-01-01'), number_of_days)")).show()

结果:

+----------+--------------+----------+
|      date|number_of_days|  new_date|
+----------+--------------+----------+
|1960-01-01|             1|1960-01-02|
|1960-01-01|             2|1960-01-03|
+----------+--------------+----------+

相关问题